Новый для C++ и OOP. Я пытаюсь выяснить списки и итерацию, поэтому я создал следующий пример кода. Я создаю пару объектов Thing, но я хочу убедиться, что при создании Thing его конструктор добавляет его в список «вещей» (внутри объекта списка), чтобы я мог отслеживать каждый экземпляр Thing. В нижней части main() я затем перебираю список вещей. Есть ли лучший способ сделать это, или вы могли бы указать, как это сделать в моем конструкторе Thing? Благодаря!!Конструктор для добавления каждого экземпляра класса в объект списка
#include <iostream>
#include <list>
class Thing;
class Lists
{
public:
std::list<Thing> things;
Lists() {
std::cout << "List object with list 'things' created" << std::endl;
}
};
class Thing
{
public:
int howMuch, pointer;
Thing(int x, Lists* y)
{
howMuch = x;
y->things.push_back(this);
}
};
int main()
{
//create the object that holds the list of things
Lists lists;
//make some objects, and pass a pointer of the lists to the constructor
Thing thingA(123, &lists);
Thing thingB(456, &lists);
for (std::list<Thing>::iterator it = lists.things.begin(); it != lists.things.end(); ++it)
std::cout << "test" << it->howMuch << std::endl;
return 0;
}
Использования 'статического станда :: список вещей;', вам не нужно будет передать указатель на объект , –
может иметь 'void addThing (int howMuch);' function в вашем списке – tinkertime
Вы имели в виду 'std :: list things;' вместо 'std :: list things;'? Обратите внимание на добавленный '*'. –