찾다

 >  Q&A  >  본문

c++ - 在类的成员变量定义时,使用此变量的带参数的构造函数来初始化,被编译器误解、报错。如何才能达到目的?

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;
}
ringa_leeringa_lee2807일 전563

모든 응답(3)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-17 15:05:04

    너무 많이 생각하고 계십니다. 클래스 멤버 변수를 이렇게 선언할 수 없습니다.

    으아악

    매개변수가 없는 생성자 호출을 제외하고 다른 생성자 호출은 함수 호출이 실제 매개변수를 사용하고 유형 선언이 없기 때문에 모호하지 않습니다. 어떻게 함수 선언으로 오해될 수 있습니까?

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 15:05:04

    C 11 이상을 지원하는 컴파일러를 사용하는 경우 클래스 정의 시 멤버 변수를 초기화할 수 있습니다.
    컴파일러에서 보고한 오류가 정확합니다. 여기서는 괄호를 사용하여 초기화 목록을 사용하거나 등호를 직접 사용할 수 있습니다.

    으아악

    물론 문서를 참조할 수 있는 몇 가지 세부정보가 있습니다.
    http://en.cppreference.com/w/...

    회신하다
    0
  • 迷茫

    迷茫2017-04-17 15:05:04

    정적 멤버로 변경하거나 생성자에서 초기화하세요.

    회신하다
    0
  • 취소회신하다