2011-07-09 14 views
0

私はC++を新しくしており、名前空間とその動作方法を理解しようとしています 名前空間を使用して単純な "hello world"プログラムをコーディングすると思ったが、それが になったとき、私と私は奇妙なエラーの束を取得しています。ここで 名前空間。予期しないIDの前に ')'トークン。無効な構造体の使用

は私のコードです:

#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 |エラー: ')'トークンの前にunqualified-idが必要です。 E:\ CB_Workspace \ Names \ names_main.cpp ||関数 'int main()'では:| E:\ CB_Workspace \ Names \ names_main.cpp | 16 |エラー:不完全な型 'struct names :: hello'の無効な使用| E:\ CB_Workspace \ Names \ names_main.cpp | 7 |エラー: 'struct names :: hello'の前方宣言| || ===構築が完了しました:3つのエラー、0の警告=== |

私は何が起こっているのか分かりませんし、このエラーで他の投稿を検索しようとしました。 これで見つかったもう1つの投稿は、実際には名前空間のコンテキストには対応していませんでした。

g++ error - expected unqualified-id before ')' token

任意の助けもいただければ幸いです。ありがとうございます

編集:ok thanks guys。私は自分の名前空間の下で "クラス"を削除し、今は動作します。私はそれが今閉じられるようにフラグを立てるでしょう。ヘルプありがとう

答えて

2

これは名前空間とは関係ありません。関数を宣言するためのルール++ C/Cで

は次のとおりです。C/C++のルールに従わない関数を宣言するの

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

あなたの方法。あなたが持っていることは次のとおりです。

void class hello(); 

それは次のようになります。

void hello(); 

おそらくあなたは、クラス本体の外部関数を定義するための構文を使用して混乱しています。その場合にはルールがある:

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

} 

名前空間は、関数が宣言されている方法には影響しません。機能が使用可能な場所を定義します。

2
void class hello() 

Huh?機能はどのようにしてclassになりますか?それを削除してください:

void hello() 
3

あなたはclassを書こうとしていません。クラスは関数とは異なります。試してみてください:

void hello() 
関連する問題