вектор указателей на объекты класса - PullRequest
3 голосов
/ 07 июня 2019

У меня проблемы с пониманием векторов указателей на объекты классов, я пробовал тестовый код, чтобы попытаться понять его, но всякий раз, когда я ввожу имя и пытаюсь его вывести, он выводит числа вместо фактического имени, которое япоступил.Я надеюсь, что кто-то может объяснить это мне, поскольку я новичок в этих понятиях.

Кроме того, Pets[0]->print(); вообще не печатает, пока:

cout << "in main: " << Pets[0] << endl; 

печатает.

class Pet
{ 
public:
    string name;
    Pet(const string&);

    string getName() const
    {
        return name;
    }
    void setName(const string& Name)
    {
        name = Name;
    }
    void print()const;
}

int main()
{
    vector<Pet*> Pets;
    string names;
    int done = NULL;
    do
    {
        {
            cout << "Name: ";
            cin >> names;
            Pets.push_back(new Pet(names));
            cin.ignore();
        }
        cout << "Add another ?" << endl;
        cin >> done;
    } while (done != 0);

    Pets[0]->print();
    cout << "in main: " << Pets[0] << endl;
    system("pause");
}
Pet::Pet(const string& Name)
{
}
void Pet::print()const
{
    cout << "Name: " << name;
}

1 Ответ

2 голосов
/ 07 июня 2019

Конструктор Pet не назначает параметр, поэтому он остается пустым.

Запись ...

Pet::Pet(const string& Name) : name(Name) { }

чтобы выполнить эту инициализацию.

...