2010-07-28 3 views
4

아주 간단한 코드 : 오류가 오류가C++ "오류 : '='토큰 전에 예상 생성자, 소멸자, 또는 형식 변환을"같은 파일 'foo.h'에있는

class Xface 
{ 
    public: 
    uint32_t m_tick; 
    Xface(uint32_t tk) 
    { 
     m_tick=tk; 
    } 
} 

std::map<uint32_t, Xface*> m; 

Xface* tmp; 

tmp = new Xface(100); **//Error** 
m[1] = tmp; **//Error** 

tmp = new Xface(200); **//Error** 
m[2] = tmp; **//Error** 

입니다 : 소멸자 또는 형식 변환 '='이전에 모든 할당에 대해 토큰 .

+0

나는 을 포함 시켰습니다. 도움 주셔서 감사합니다! – lukmac

답변

3
class Xface 
{ 
    public: 
    uint32_t m_tick; 
    Xface(uint32_t tk) 
    { 
     m_tick=tk; 
    } 
} // need a semicolon here 

클래스 정의 끝에 세미콜론이 누락되었습니다.

+0

고마워, 그건 내 오타 였어. 하지만 내가 추가 한 후에도 여전히 작동하지 않습니다. 나는 아래에 게시 된 'Randolpho'의 답을 시도 할 것이다. – lukmac

4

코드가 일부 함수 내에 있어야합니다. void로 넣을 수는 없습니다 .-) main에서 동일한 코드를 실행하고 어떤 일이 발생하는지보십시오.

8

C++는 스크립팅 언어가 아닙니다. 실행 가능한 코드 블록의 범위를 벗어나는 항목을 선언 할 수는 있지만 처리 할 수는 없습니다. 오류 코드를 다음과 같은 함수로 옮겨보십시오.

int main() 
{ 
    std::map<uint32_t, Xface*> m; 

    Xface* tmp; 

    tmp = new Xface(100); **//Error** 
    m[1] = tmp; **//Error** 

    tmp = new Xface(200); **//Error** 
    m[2] = tmp; **//Error** 
} 
+2

예, 멋지네요, 방금'python'처럼 코드를 작성할 수 있다면, 바로 뒤에 ;-) – gruszczy

+1

저를 깨우셔서 감사합니다! – lukmac

+2

그 C++ 코더는 유머 감각이 없습니다. -P – gruszczy

2

기본 생성자가 없습니다. 인수가 필요없는 생성자가 필요합니다. 지금은 uint32_t이 필요한 생성자가 있으므로 new 배열을 사용할 수 없습니다. Neil이 지적했듯이, 누락 된 세미콜론과 gruszczy의 관찰 결과 실행 가능 코드는 함수에 있어야합니다.

관련 문제