首页新闻找找看学习计划

c++中关于union中放class

1
悬赏园豆:5 [已解决问题] 解决于 2013-11-21 18:03
    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();两种写法有什么不同?

 

likebeta的主页 likebeta | 初学一级 | 园豆:179
提问于:2013-11-21 15:55
< >
分享
最佳答案
0

REQChangeGameInfo m_reqChangeGameInfo(); 带括号的意思是,union里面有个叫m_reqChangeGameInfo的函数,没有参数,返回值是REQChangeGameInfo。

union里面不能放有构造函数,析构函数和拷贝构造函数的class的成员变量

因为编译器无法决定是否该调用构造函数去初始化成员变量

收获园豆:5
嗷嗷 | 小虾三级 |园豆:557 | 2013-11-21 17:47

嗯,迷惑了,竟然没看出是函数

likebeta | 园豆:179 (初学一级) | 2013-11-21 18:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册