К сожалению, это хромает, но я не могу понять:Lame оператор
class Address {
public:
uint32_t addr;
uint16_t port;
public:
Address();
Address(uint32_t addr, uint16_t port);
Address(const Address & src);
Address& operator=(const Address &src);
bool isNull();
friend std::ostream& operator<<(std::ostream& os, const Address& addr);
friend std::ostream& operator<<(const Address& addr, std::ostream& os);
};
std::ostream& operator<<(std::ostream& os, const Address& addr){
return os << " (" << addr.addr << " : " << addr.port << ") ";
}
std::ostream& operator<<(const Address& addr, std::ostream& os){
return os << addr;
}
говорит:
../src/streamShare/types.h: In function ‘std::ostream& streamShare::operator<<(std::ostream&, const streamShare::Address&)’:
../src/streamShare/types.h:46: error: no match for ‘operator<<’ in ‘os << " ("’
../src/streamShare/types.h:45: note: candidates are: std::ostream& streamShare::operator<<(std::ostream&, const streamShare::Address&)
Может быть, это просто, что я в воскресенье похмелья ... но эй ostream& << "oihoih"
должен работать !!!
Уверен, что вы включили заголовок ''? Если вы просто включили (прямо или косвенно) '', то программа могла бы вести себя именно так. –
Что касается абсолютно несвязанной заметки, я думаю, вы хотите, чтобы этот первый спецификатор доступа был 'private', а не' public', иначе ваш оператор 'friend' бесполезен. –