using namespace std;
class A
{
public:
A(int a) :m(a) {};
void show() {
cout << "m=" << m << endl;
}
private:
int m;
};
class B
{
public:
A aa(5);//VS2015此处报错:“应输入类型说明符”。
//说明编译器把此处理解成了:声明一个名为aa、返回值为A,有一个入参的成员函数了。
//而本来的意图只是想定义一个名为aa的成员对象
};
int main(void)
{
A a(44);
a.show();
return 0;
}
너무 많이 생각하고 계십니다. 클래스 멤버 변수를 이렇게 선언할 수 없습니다.
으아악매개변수가 없는 생성자 호출을 제외하고 다른 생성자 호출은 함수 호출이 실제 매개변수를 사용하고 유형 선언이 없기 때문에 모호하지 않습니다. 어떻게 함수 선언으로 오해될 수 있습니까?
C 11 이상을 지원하는 컴파일러를 사용하는 경우 클래스 정의 시 멤버 변수를 초기화할 수 있습니다.
으아악컴파일러에서 보고한 오류가 정확합니다. 여기서는 괄호를 사용하여 초기화 목록을 사용하거나 등호를 직접 사용할 수 있습니다.
물론 문서를 참조할 수 있는 몇 가지 세부정보가 있습니다.
http://en.cppreference.com/w/...
정적 멤버로 변경하거나 생성자에서 초기화하세요.