Перегрузка оператора друга ostream с вектором shared_ptr - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь перегрузить оператор ostream как друга в классе для создания компонентов схемы, однако он продолжает возвращать адрес.

В классе последовательных цепей в файле "Circuit_classes.h":

friend ostream& operator<< (ostream& os, series_circuit const& myCircuit);

В файле "Circuit_classes.cpp":

ostream& operator<<(ostream& os, series_circuit const& myCircuit){
    os << "Output: " << myCircuit.frequency << endl;
    return os;
}

где frequency определено в заголовочном файле класса как 60.

В моей основной программе "AC Circuits.cpp"

vector<shared_ptr<circuit>> circuit_vector;
circuit_vector.push_back(shared_ptr<circuit>(new series_circuit));
cout << circuit_vector[0] << endl;

Вывод в командной строке при запуске программы:

0325E180

1 Ответ

0 голосов
/ 07 мая 2018
cout << circuit_vector[0] << endl;

circuit_vector[0] дает std::shared_ptr, то есть то, что печатается.

Вы должны разыменовать его, чтобы добраться до самого объекта.

cout << *circuit_vector[0] << endl;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...