2012-06-05 2 views
1

Что такое ошибка в этом файле я получаю:foo2.cpp: 9: ошибка: ожидается, первичное выражение, прежде чем '(' маркер

 
foo2.cpp:9: error: expected primary-expression before '(' token 
foo2.cpp:9: error: expected primary-expression before 'int' 
foo2.cpp:9: error: expected ';' before '{' token 
int main(void) 
{ 
    class X { 
    int i; 
    public: 
    X(int ii = 0); 
    }; 

    X::X(int ii) { i = ii; } 
    return 0; 
} 
+0

Я не C эксперт ++ , так что, возможно, это какая-то особенность, о которой я никогда не рассказывал, но я думаю, что вам нужно переместить класс и метод вне 'main()'. – Ryan

+1

@minitech класс в порядке, это метод, который является проблемой. –

+0

@LuchianGrigore: Но если вы переместите метод из 'main()' класс должен следовать, правильно? – Ryan

ответ

7

Во-первых, я хотел бы спросить, почему

Во-вторых, вы не можете обеспечить реализацию внутри метода (включая main) Если вы должны сделать это, держать инлайн реализации:?.

int main() 
{ 
    class X { 
    int i; 
    public: 
    X(int ii = 0){ i = ii; } 
    }; 
    return 0; 
} 
+0

большое спасибо! oops :(Я только что начал кодирование на C++, поэтому я пропустил тот факт, что у меня была вложенная функция. –

1

Вы не можете встраивать функции в C++. Чтобы изменить свою программу, у вас есть две альтернативы. Вы можете переместить определение класса за пределами main, или вы можете поместить ваше определение метода внутри класса:

Первая альтернатива:

class X { 
    int i; 
public: 
    X(int ii = 0); 
}; 

X::X(int ii) { i = ii; } 

int main(void) 
{ 
    return 0; 
} 

Второй вариант:

int main(void) 
{ 
    class X { 
    int i; 
    public: 
    X(int ii = 0) { i = ii; } 
    }; 

    return 0; 
} 
+0

спасибо, что rob! случайно удалил это –

Смежные вопросы