私は、Googleで、より具体的には、ここでは広範に回答を検索したと言って始めましょう。externクラスオブジェクトを宣言する問題
私が実際に(少なくとも私がやったと思うのは)同様の問題を抱えた人々が見つかりましたが、彼らに与えられた答えは私に別の問題をもたらしました。
私は、Visual Studio 2010のExpressを使用して(私はこの最後の部分が関連しているとは思わないが)だからここにそれが行くSFMLのlibaryで
を働いている:
私はプレーヤーと呼ばれるソースファイルを持っています。 cppはclass Playerを保持し、必要なインクルードと外部変数/関数をすべて保持するcc.h(コマンドと制御)と呼ばれるヘッダファイル(すべてのソースファイルに含まれています)を持っています。
Player.cpp:
#include "cc.h"
class Player
{
private:
//some variables here
public:
//more variables and some functions
}john;//example instance
cc.h:プレーヤーは間違いとして下線が引かれているcc.h言葉で今
#pragma once
//some #includes
//some externs
extern Player john;
不可欠なコードは次のように要約することができます未定義の識別子だと言っていますが、ときどき、視覚スタジオはそれを間違いとしてマークせず、代わりにクラスとして認識しますが、オブジェクト/インスタンスとしてジョンを認識しません(私はこれを同じクラスの方法です)。 さらに、最初のエラーをコンパイルするときには、johnのextern宣言の行に "error C2146: syntax error : missing ';' before identifier 'john'
"と表示されています。これはcc.hで、明らかに(私にとっては)意味がありません。
あなたはインクルードガード(または他のもの)のために予約された名前を使用してはいけません。そうでなければ[this](http://stackoverflow.com/questions/3345159/in-c-whats-soec-special-about-move-h ) 発生する可能性があります。 –
私はいくつかのセミコロンを追加し、Mikeが指摘しているエラーを修正しました。(アンダースコアと大文字で始まる識別子は予約されています) –