0

私は cpp にはかなり慣れていませんが、しばらくの間 c# を使用しています。単純なコンソール アプリケーションを実行しようとしていますが、この LNK2001 エラー メッセージが表示されます。

私は main.cpp を持っていて、Zeus.h と Zeus.cpp というファイルを含む別のクラス Zeus を追加しました。

main.cpp は次のとおりです。

#include "Zeus.h"
#include <iostream>

int main()
{
    Zeus::tick = 25.0;
    using std::cout;
    cout << "nothing";
}

Zeus.h は次のとおりです。

static class Zeus
{
public:
    static void testing(void);
public:
    static double tick;
};

Zeus.cpp は次のとおりです。

void Zeus::testing(void)
{
 //Doesnt get this far
 //But eventually something like
 // cout << "test " << Zeus::tick;

}

そして、ここにエラーメッセージがあります:

エラー 20 エラー LNK2001: 未解決の外部シンボル "public: static double Zeus::tick"

ありがとう、

4

3 に答える 3

1

定義する必要がありますZeus::tick。通常は、Zeus.cppファイル内で定義します。あなたはそれを宣言しただけです。

double Zeus::tick = 0.0;

また、static classC++にはありません。

余談ですが、クラスの静的関数ではなく、無料の関数を名前空間に入れることができます。関数が静的であるという強い理由がない限り、これはC++で推奨される方法です。

namespace Dionysus {
  void testing();
}
于 2012-08-15T16:00:12.550 に答える
0

エラーメッセージが示すように:の定義はありませんZeus::tick。これをZeus.cppに追加します。

double Zeus::tick;

ああ、Zeus.hでからを削除staticします

static class Zeus
于 2012-08-15T16:01:23.627 に答える
0

あなたが持っているmain()機能では、ステートメントとはどういう意味Zeus::tick = 25.0;ですか? Zeusクラスです。したがって、その個々の要素にアクセスするには、そのインスタンスを作成する必要があります。最初にインスタンスを作成して個々の要素にアクセスする構造のようなものです。

次のことを試してください。

int main() {
    Zeus myobject;

    myobject.tick = 25.0;
    /* Rest of the definition */ 
}  
于 2012-08-15T16:08:50.823 に答える