Member 13204472 Ответов: 1

Почему эти геттеры не возвращают правильные значения?


Геттеры возвращают мусорные данные, даже если экземпляр "Person", кажется, содержит правильные данные, когда я проверяю отладчик:

Name: P÷        ☺, Age: 2019912769


std::unique_ptr<Person> person(new Person());

printf("Name: %s, Age: %d\n", person->getName(), person->getAge());

#include <string>

using string = std::string;

class Person
{
public:
    Person() : name("Alex"), age(22) { }
    
    void change(const string& name, const int age)
    {
        this->name = name;
        this->age = age;
    }

    const string getName() { return name; }
    const int getAge() { return age; }

private:
    string name;
    int age;
};


Что я уже пробовал:

Поиск в интернете объяснения, почему это происходит

1 Ответов

Рейтинг:
1

k5054

Программы на C++, вероятно, должны использовать std::cout скорее, чем printf. В этом случае спецификатор формата '%s ' ожидает char * не C++ string.

Вы должны получить правильные результаты с помощью

std::cout << "Name: " << person->getName() << " Age: " << person->getAge() << std::endl;