пространства имен; Ожидается, неквалифицированный-ID до '{' знак ; неверное использование структуры - PullRequest
0 голосов
/ 09 июля 2011

Я новичок в c ++ и пытаюсь понять пространства имен и как они работают Я думал, что кодирую простую программу "hello world", используя пространства имен, но, как оказалось, похоже, это вызвало у меня неприятные последствия, и я получаю кучу странных ошибок.

Вот мой код:

    #include <iostream>

    namespace names
    {
       using namespace std;
       void class hello() //line 7 <-- here is where the compiler is complaining 
                                       about the 'unqualified id'
       {
        cout <<"Hello World";
       }
    }

    int main()
    {
       names::hello(); //line 16
    }

А вот и вывод:

E: \ CB_Workspace \ Имена \ names_main.cpp | 7 | ошибка: ожидаемый неквалифицированный идентификатор перед токеном ')' | E: \ CB_Workspace \ Имена \ names_main.cpp || В функции 'int main ()': | E: \ CB_Workspace \ Имена \ names_main.cpp | 16 | ошибка: неверное использование неполного типа 'struct names :: hello' | E: \ CB_Workspace \ Имена \ names_main.cpp | 7 | ошибка: прямое объявление 'struct names :: hello' | || === Сборка завершена: 3 ошибки, 0 предупреждений === |

Я не уверен, что происходит, и я попытался найти другие сообщения об этой ошибке. Другой пост, который я нашел по этому вопросу, на самом деле не касался контекста пространств имен.

g ++ error - ожидаемый неквалифицированный идентификатор перед символом ')'

Любая помощь будет высоко ценится. Спасибо

edit: ок, спасибо, ребята. Я удалил «класс» из своего пространства имен, и теперь он работает. Я отмечу это, чтобы быть закрытым сейчас. Спасибо за помощь

Ответы [ 3 ]

3 голосов
/ 09 июля 2011

Вы не пытаетесь написать class там.Класс отличается от функции.Пожалуйста, попробуйте:

void hello()
2 голосов
/ 09 июля 2011

Это не имеет ничего общего с пространством имен.

В C / C ++ правило объявления функции:

returnType functionName(functionArgument1,functionArgument2,...);

Ваш способ объявления функции не следует C /Правило C ++.То, что у вас есть:

void class hello();

Это должно быть:

void hello();

Возможно, вы путаете его с синтаксисом для определения функции вне тела класса.В этом случае правило:

returnType className::functionName(functionArgument1, functionArgument2,...)
{

}

Пространство имен не влияет на то, как объявлена ​​функция.Он определяет, где доступна функция

2 голосов
/ 09 июля 2011
void class hello()

А? Как функция также может быть class? Просто удалите это:

void hello()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...