次の2つのファイルをリンクできませんでした。「静的」キーワードを削除しても大丈夫です。 g ++でテスト済み。 readelfでオブジェクトファイルをチェックすると、静的メンバーがグローバルオブジェクトシンボルとしてエクスポートされているように見えますが、ローカルオブジェクトでなければならないと思います...?静的メンバーの複数定義ですか?
static1.cpp
class StaticClass
{
public:
void setMemberA(int m) { a = m; }
int getMemberA() const { return a; }
private:
static int a;
};
int StaticClass::a = 0;
void first()
{
StaticClass statc1;
static1.setMemberA(2);
}
エラー情報でstatic2.cpp
class StaticClass
{
public:
void setMemberA(int m) { a = m; }
int getMemberA() const { return a; }
private:
static int a;
};
int StaticClass::a = 0;
void second()
{
StaticClass statc1;
static1.setMemberA(2);
}
:
/tmp/ccIdHsDm.o:(.bss+0x0):複数の `StaticClass :: a 'の定義
@Ropez:うまく動作します。ありがとう:) –
私はロペスの答えは、あなたが探していた解決策を与えているようだので、状態の悪い感じ。とにかく彼の+1にチェックマークを移動してください。 –
@Litb、どちらも正しいです:)もっと説明しました。 –