0

私は2つのファイルを持っています:

  1. tier1.h

  2. tier1.cpp

tier1.h には次のものがあります。

//code

namespace variab
{
  int x...; float tpl...; //etc
}

namespace universal
{
  using namespace variab;
  //some functions prototypes
}

tier1.cpp には関数が定義されています。一部の関数は、universal::extG:: のように複雑な名前空間にあります。これらの関数は、variab 名前空間にある変数を使用しています。

main があるソース ファイルには、tier1.h が含まれています。

プログラムをコンパイルしようとすると、variab 名前空間で見つかった変数を指すエラーが表示されます。エラーはどこでも同じです。これはどのように見えるかです:

error LNK2001: unresolved external symbol "int * variab::st" (?st@variab@@3PAHA)

問題はどこだ?

4

1 に答える 1

1

ヘッダー ファイルでは、名前空間で変数を宣言しています。extern次のキーワードでのみ宣言する必要があります。

namespace variab
{
    extern int x;
    extern float tpl;
    // etc...
}

次に、ソース ファイルで定義を行います。

namespace variab
{
    int x;
    float tpl;
    // etc...
}
于 2013-10-20T18:58:59.537 に答える