首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

pair的数据成员为public,然而下面这段代码却不能编译,why?该怎么解决

2012-04-11 
pair的数据成员为public,然而下面这段代码却不能编译,why?pair int,intp2{0,42}//doesn tcompile,why?

pair的数据成员为public,然而下面这段代码却不能编译,why?
pair <int,int>   p2   =   {0,42};//doesn 't   compile,why?

[解决办法]
没有重载这样的=操作符
直接调用构造函数
pair <int,int> p2(0,42);
[解决办法]
用pair <int,int> p2(0,42);就OK 了哦。。


[解决办法]
template <typename X,typename Y>
class Test
{
public:
X x;
Y y;
};
Test <int,int> test = {0,42};//这可以的,为什么他就能编译,他也没有重载=操作符啊
=================================================================================
你这个没有默认的构造函数,编译器合成了一个,才让你={0,42}成功了。
你若自己再加上定义一个Test(){},这时候你有构造函数了,编译器不再为你合成了,
就不行了,你的这种就非法了。大概就是这个意思了。
因为pair有自己的构造函数。所以要求你的初始化式,符合pair构造函数的声明。

[解决办法]
在没有自己定义任何构造函数的时候,编译器才让你={0,42}成功,C++标准规定而已。
[解决办法]
好像有个make_pair宏

热点排行