朋友未获得私人成员
|
我有一个名为
Packet
的类,我想与QDataStream
进行序列化,重载了operator>>
和operator<<
,在重载函数中我叫stream << somIntMember
,尽管它被声明为朋友,但抱怨私有变量
error: \'int DG::Packet::_state\' is private
error: \'DG::Packet::PacketType DG::Packet::_type\' is private
我的标题到了。
namespace DG{
class Packet{
public:
struct CommonHeader{
public:
quint32 id;
QTime time;
quint32 size;
PacketType packetType;
public:
CommonHeader();
CommonHeader(quint32 sz, PacketType type);
friend QDataStream& operator<<(QDataStream&, const Packet::CommonHeader& header);
friend QDataStream& operator>>(QDataStream&, Packet::CommonHeader& header);
};
private:
PacketType _type;
int _state;
public:
friend QDataStream& operator<<(QDataStream&, const Packet& packet);
friend QDataStream& operator>>(QDataStream&, Packet& packet);
};
}
这就是Ciode
#include \"packet.h\"
using namespace DG;
QDataStream& operator<<(QDataStream& stream, const Packet& packet){
stream << packet._state << packet._type;
return packet.serialize(stream);
}
没有找到相关结果
已邀请:
2 个回复
珊畴炮贩号
没有任何匹配,至少在 您显示的代码。唯一的
和
您显示的代码中的
和
。 for14ѭ,
,ѭ 16英镑,也不是17英镑。 因此,您向我们展示的实现仅用于
和
;这些课程是 在名称空间“ 20”中,而不在全局名称空间中。 这也可以解释
不起作用的原因。 您已声明为好友的运算符位于名称空间
中, 您定义的那些位于全局名称空间中(因此 完全无关的功能)。
纫合峭