【发布时间】:2019-12-11 11:34:22
【问题描述】:
class Class {
public:
std::pair<int,int> p (45, 12);// error: "requires a type specifier"
};
int main(){
std::pair<int, int> pm (45, 12);// ok
}
'utility' 标头已包含在内。另外,如果我尝试通过“make_pair”创建一对,编译器会写“标识符“make_pair”未定义”,但它是在“实用程序”中定义的,不是吗?
【问题讨论】:
-
这些不是表达,而是定义。第一个是带有(错误)初始化的成员变量声明。第二个是局部变量的定义。那是有区别的。
-
在类中进行内联初始化时不能使用括号,以消除函数声明的歧义。要么使用带有
=的“赋值”语法,要么使用带有花括号{}的统一初始化。
标签: c++ class initialization