-1

このJavaシングルトンクラスをC++に移植しようとしています。

public class Singleton {
private static Singleton uniqueInstance;

private Singleton() {} 
public static Singleton getInstance() {
    if (uniqueInstance == null) {
        uniqueInstance = new Singleton();
    }
        return uniqueInstance;
    }
}

私はこのC++コードに移植しました:

class Singleton {
private:
  Singleton() {
    cout << "new Singleton is called" << endl;
  }
  static Singleton* uniqueInstance;
public:
   static Singleton* getInstance() {
    if (!uniqueInstance) {
      uniqueInstance = new Singleton();
    }
    return uniqueInstance;
  }
};

しかし、私はこれをコンパイルすることはできません!およびgccリンカーエラーが発生しました。

4

2 に答える 2

7

static宣言の外側でメンバーを定義していることを確認してください。

Singleton* Singleton::uniqueInstance = nullptr;
于 2013-03-24T08:06:10.897 に答える
2

cppファイルはおそらく静的インスタンス用のスペースを予約していません。cppファイルに追加 Singelton* Singleton::uniqueInstance = NULL;してから、最初の呼び出しで割り当てる必要があります

于 2013-03-24T08:07:19.690 に答える