为什么'class'和'main'中的相等表达式表现不同?

Why do equal expressions in 'class' and 'main' behave differently?

本文关键字:表达式 class main 为什么      更新时间:2023-10-16
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
}

包含"实用程序"标头。此外,如果我尝试通过"make_pair"创建一个对,编译器会写"标识符"make_pair未定义",但它是在"实用程序"中定义的,不是吗?

如果可以的话,这是一个非正式的答案。这两种说法是截然不同的野兽。第一个是尝试初始化的成员变量声明。

第二个是声明具有自动存储持续时间的变量,同样是初始化。

这个混乱在 C++11 中通过统一初始化得到了清理:

std::pair<int,int> p{45, 12};

无论哪种情况都有效。请注意大括号语法。