дружественной функции класса наследника?
#include <iostream>
#include <string>
using std::ostream;
class A {
public:
A(int number) : number_(number) {}
friend ostream& operator<<(ostream &os, const A &a) {
return (os << "number={\"" << a.number_ << "\"}");
}
private:
int number_;
};
class B : public A {
public:
B(int number, std::string str) : A(number), str_(str) {}
friend ostream& operator<<(ostream& os, const B& b) {
// Так работает:
const A& temp = static_cast<const A&>(b);
os << temp;
// А так нет:
// os << static_cast<const A&>(B);
// говорит: 'B' does not refer to a value
return (os << ", str={\"" << b.str_ << "\"}");
}
private:
std::string str_;
};
int main() {
A a(10);
std::cout << a << std::endl;
B b(15, "hello, Garry");
std::cout << b << std::endl;
}
B это тип, что он делает в круглых скобках?
А, я слепой, спасибо
Обсуждают сегодня