C++ Lame算子重定义错误
对不起,这很蹩脚,但我想不出来:C++ Lame算子重定义错误,c++,C++,对不起,这很蹩脚,但我想不出来: 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 isN
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;
}
类地址{
公众:
uint32地址;
uint16_t端口;
公众:
地址();
地址(uint32地址、uint16端口);
地址(const地址和src);
地址和运算符=(常量地址和src);
bool为空();
friend std::ostream&operator下面的代码在gcc 4.3.2上为我编译得很好(我定义了构造函数以使其正确链接)
看看这是否对您有效,如果有效,只需回顾您的步骤,看看您的做法有何不同。以下代码在gcc 4.3.2上对我来说编译得很好。(我定义了构造函数以使其正确链接。)
看看这对你是否有效,如果有效,只要回顾一下你的步骤,看看你做的有什么不同。好吧,如果我包括
#include <cstdint>
#include <iostream>
#包括
#包括
在代码的开头,我可以使用g++-c-std=c++0x Account.cpp
(g++4.4.1)编译它。如果我包括
#include <cstdint>
#include <iostream>
#包括
#包括
在您的代码开始时,我可以使用g++-c-std=c++0x Account.cpp
(g++4.4.1)编译它。如果您刚刚(直接或间接)包含了
标题,是否确实包含了它
该程序可能会以这种方式运行。请注意,我认为您希望第一个访问说明符是private
而不是public
,否则您的friend
语句就没用了。如果您只是(直接或间接地)包含
头,是否确实包含了
头
程序可能就是这样运行的。请注意,我认为您希望第一个访问说明符是私有的
,而不是公共的
,否则您的朋友的
语句就没用了。
( 0 : 0 )
#include <cstdint>
#include <iostream>