C++ 创建配对对象c++;
为什么无法按以下方式创建配对对象:C++ 创建配对对象c++;,c++,C++,为什么无法按以下方式创建配对对象: pair<int,int> p1 = {0,42} 对p1={0,42} 在C++03中,您应该使用 std::make_pair(0, 42); 因为pair不是简单的数据结构。 或者通过调用对的构造函数,即 std::pair<int, int> p1(0, 42); std::对p1(0,42); 在C++11中 对p1={0,42} 可以。在C++03中不允许使用初始值设定项列表语法,因为std::pair不是聚合,因此
pair<int,int> p1 = {0,42}
对p1={0,42}
在C++03中,您应该使用
std::make_pair(0, 42);
因为pair不是简单的数据结构。
或者通过调用对的构造函数,即
std::pair<int, int> p1(0, 42);
std::对p1(0,42);
在C++11中
对p1={0,42}
可以。在C++03中不允许使用初始值设定项列表语法,因为
std::pair
不是聚合,因此初始化的有效方法是构造函数调用
从C++标准(C++ 03 8.5.1节1)的形式定义:
聚合是没有声明用户的数组或类(第9条) 构造函数(12.1),没有私有或受保护的非静态数据成员 (第11条),没有基类(第10条),也没有虚函数 (10.3) 请阅读详细解释在C++11中,由于引入了
std::initializer\u list
为什么您认为这是不可能的?如果您是在Linux下编译,请尝试链接-std=C++11。如果你已经包括分号等,它应该可以正常工作。