2013-02-18 2 views
-1

나는 오류가있어? 클래스 오류, 예상; 전 (토큰

expected ';' before '(' token.

왜 이런 일이 어떻게 그것을 해결할 수있다

#include <iostream> 

class AB { 
int n; 
AB(int x) { n = x;} 
}; 


class ED { 

AB blee(1); 
}; 

답변

3

이 가장 가능성이 잘못된 구문 분석 실패하고 있습니다 :

AB blee(1); 

AB 타입의 데이터 멤버를 초기화하려고한다면 그렇게 할 수 없습니다 .C++ 11에서는 다음과 같이 할 수 있습니다 :

AB blee{1}; 

또는

AB blee = 1; 

는 다른 방법으로는 ED의 생성자 (들)에서 할 수 있습니다. 이것은 C++ 11 및 C++ 03에서 모두 작동합니다.

class ED { 
    ED() : blee(1) {} 
    AB blee; 
}; 
+0

만약 AB 필기 = 1이면 에러가 발생합니다 : 정수 타입이 아닌 AB 형의 정적 데이터 멤버 인 AB 타입이 유효하지 않습니다. – user2085124

+0

@ user2085124 C++ 11을 지원합니까? – juanchopanza

+0

GCC가 아니라 DevC++에서 컴파일 중이므로 – user2085124

1

AB blee(1);으로 무엇을하려고합니까? 그것은 함수 선언이나 함수 호출이 아닙니다.

함수를 호출하려면 함수를 호출하려면 ED 멤버의 본문에 넣고 AB은 그대로두고 blee(1);으로 남겨 둡니다.

는 괄호 안에 유형 (예를 들어, int) 둘 필요 것, 함수를 선언하려면 : AB blee(int);

+0

나의 목표는 main 함수'ED object;'를 호출하여 object.blee.n = 1을 만드는 것이었다. – user2085124

3
당신은 멤버 초기화을 통해 생성자에 의해 인스턴스화해야한다

:

class ED { 
    ED() : blee(1) {} 

    AB blee; 
}; 
+0

C++ 11이없는 경우에만 * 반드시 * 이것을해야한다. – juanchopanza

관련 문제