C/C++

Программа на С++

#include <iostream>
#include <string>
using namespace std;
template <typename T>
class Fruit
{
protected:
double sweetness, bitterness, sourness;
string name;

public:
Fruit(string n = "Fruit ", double sw = 0, double b = 0, double s = 0) //конструктор инициализации
{
name = n; sweetness = sw; bitterness = b; sourness = s;
}

Fruit(Fruit& fruit) {//конструктор копирования
name = fruit.name;
sweetness = fruit.sweetness;
bitterness = fruit.bitterness;
sourness = fruit.sourness;
}

void juice(double sugar) {
double k = 1;
double fruit = 100;
double juice = fruit * k * 0.6 + sugar;
cout << "Сок из 1 кг " << name << " c добавлением " << sugar << " грамм сахара" << endl << juice << " грамм" << endl << endl;
}
void plant() {
cout << name << " посажен" << endl;
}
virtual void getname() {
cout << "Это фрукт\n";
}

void SetName(string n) {
this->name = n;
}
string GetName() {
return this->name;
}
void SetSweet(double sw) {
this->sweetness = sw;
}
double GetSweet() {
return this->sweetness;
}
void SetBitter(double b) {
this->bitterness = b;
}
double GetBitter() {
return this->bitterness;
}
void SetSour(double s) {
this->sourness = s;
}
double GetSour() {
return this->sourness;
}
virtual void GetFruit() //показать объект на экране
{
cout << "Имя: " << name << endl;
cout << "Сладость: " << sweetness << endl;
cout << "Горькость: " << bitterness << endl;
cout << "Кислость: " << sourness << endl;
cout << endl;
}
};

template <typename T>

int main() {



}

<> эти скобки отображаться тут не будут,предупреждаю
У меня возникают две непонятные ошибки,которые я не могу исправить.Я гуглил,но не помогало.Ошибки на скрине.
Зачем перед main написано template <typename T>? Это неправильно.
Дмитрий Остапенко
Дмитрий Остапенко
58 065
Лучший ответ
Иван Разуменко Ну я читаю про шаблоны на разных сайтах. Там было написано так сделать. Я сначала пробовал с заголовочным и cpp файлом сделать, но щас просто срр ставил.
#include <iostream>
#include <string>
using namespace std;
class Fruit {
protected:
double sweetness;
double bitterness;
double sourness;
string name;
public:
Fruit(const Fruit&) = default;
Fruit(const string& n = "Fruit ", const double sw = 0, const double b = 0, const double s = 0)
: name(n), sweetness(sw), bitterness(b), sourness(s) {}

void juice(double sugar) {
double k = 1;
double fruit = 100;
double juice = fruit * k * 0.6 + sugar;
cout
<< "Сок из 1 кг " << name
<< " c добавлением " << sugar << " грамм сахара\n"
<< juice << " грамм\n\n";
}
void plant()const {
cout << name << " посажен" << endl;
}
virtual void getname()const {
cout << "Это фрукт\n";
}

void SetName(const string& n) {
name = n;
}
string GetName()const {
return name;
}
void SetSweet(double sw) {
sweetness = sw;
}
double GetSweet()const {
return sweetness;
}
void SetBitter(double b) {
bitterness = b;
}
double GetBitter()const {
return bitterness;
}
void SetSour(double s) {
sourness = s;
}
double GetSour()const {
return sourness;
}
virtual void GetFruit() {
cout
<< "Имя: " << name << '\n'
<< "Сладость: " << sweetness << '\n'
<< "Горькость: " << bitterness << '\n'
<< "Кислость: " << sourness << '\n';
}
};
int main() {
system("chcp 1251 > nul");
cout.setf(ios::fixed);
cout.precision(2U);
Fruit orange{ "Апельсин", 0.40, 0.03, 0.18 };
orange.GetFruit();
system("pause > nul");
}