union { // gamesvrd <--------------> gameinfo REQChangeGameInfo m_reqChangeGameInfo; };
invalid union member class “REQChangeGameInfo” has a disallowed member function
union { // gamesvrd <--------------> gameinfo REQChangeGameInfo m_reqChangeGameInfo(); };
REQChangeGameInfo 是protobuf的class,貌似union中不能放class,我知道boost::variant可以代替union。
下面的写法为什么可以,或者说REQChangeGameInfo m_reqChangeGameInfo;和REQChangeGameInfo m_reqChangeGameInfo();两种写法有什么不同?
REQChangeGameInfo m_reqChangeGameInfo(); 带括号的意思是,union里面有个叫m_reqChangeGameInfo的函数,没有参数,返回值是REQChangeGameInfo。
union里面不能放有构造函数,析构函数和拷贝构造函数的class的成员变量
因为编译器无法决定是否该调用构造函数去初始化成员变量
嗯,迷惑了,竟然没看出是函数