Я очень новичок в C ++, и работая с упражнениями в моем учебнике, в которых используются определяемые пользователем классы, я обнаружил, что полезно создавать объекты "фиктивных" / "заполнителей", единственное назначение которых состоит в том, чтобы облегчить использование функций. / векторы в `int main () '. Полученные мной ошибки компилятора указывают на то, что такие векторы и функции необходимо присоединять к объекту класса, поэтому я создал фиктивный объект для удовлетворения этой потребности.
Мне интересно, является ли это приемлемой практикой программирования, или если существуют лучшие альтернативы. (Также, если для этой практики есть более распространенный термин, чем «фиктивные объекты», пожалуйста, дайте мне знать.)
Я включил следующую «программу» в качестве примера. Food x
не имеет реального значения само по себе; однако, это позволяет мне использовать векторы 'foodentry ()' и 'favourfoods' внутри 'int main ()', так как кажется, что эти элементы должны быть присоединены к объекту, а «Food x» является единственным объектом У меня есть.
Спасибо, как всегда, за ваш вклад.
using namespace std;
#include <iostream>
#include <vector>
class Food
{
public:
string favoritefruit;
string favoritedessert;
vector<Food> favoritefoods;
Food(string a, string b)
: favoritefruit(a), favoritedessert(b) {}
void foodentry();
};
//"Placeholder" object. It doesn't do anything except allow me
//to use the function and vector entries in int (main). If I
//don't precede the function and vector entries in int (main)
//with the object x, they show up as undefined. Is there
//another way to get the function and vector entries in int //main() to work?
Food x{" ", " "};
void Food::foodentry()
{
cout << "Please enter your favorite fruit, other than oranges:\n";
cin >> favoritefruit;
cout << "Now please enter your favorite dessert, other than cookies:\n";
cin >> favoritedessert;
favoritefoods.push_back(Food{favoritefruit, favoritedessert});
}
int main()
{
x.favoritefoods.push_back(Food{"oranges", "cookies"});
x.foodentry();
cout << "Here are two great fruits: ";
for (int y = 0; y < x.favoritefoods.size(); y++)
{
cout << x.favoritefoods[y].favoritefruit << " ";
}
cout << "\nAnd here are two great desserts: ";
for (int y = 0; y < x.favoritefoods.size(); y++)
{
cout << x.favoritefoods[y].favoritedessert << " ";
}
}