visualstudioでこのようなエラーが出てしまいます。
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー LNK2005 "private: static class std::unique_ptr<class Object,struct std::default_delete<class Object> > Object::s_object" (?s_object@Object@@0V?$unique_ptr@VObject@@U?$default_delete@VObject@@@std@@@std@@A) は既に Object.obj で定義されています。
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー LNK1169 1 つ以上の複数回定義されているシンボルが見つかりました。
どこをどう直せばいいのでしょうか?
わかる方教えてください。
追記
関係ありそうなコードを載せます。
使うときは
Object& m_object = Object::GetInstance();
という感じに書いています。
参考になるかわかりませんがそもそもインクルードするとビルドが通らなくなるような気がします。
よろしくお願いします.
/*//////// Object.h ///////*/ #pragma once class Object { private: private: //コンストラクタ Object() { } public: //参照を返す static Object& GetInstance() { //nullの場合 if (s_object == nullptr) { s_object.reset(new Object()); } return *s_object.get(); } private: //ポインタを格納するために静的な変数を宣言 static std::unique_ptr<Object> s_object; }; //静的な変数を初期化する std::unique_ptr<Object> Object::s_object = nullptr;
ソースコードも環境設定も明示せずにですか。
荒らし目的ですか。
コードを提示しましょう
すみません。私なりに考えたのですが自身の力では難しいと考えたので投稿させていただきました。
環境はvisual studio2019を使っています。
いやだからコードみせて。
ならなおさらコードを提示しましょうよ。
親切にも日本語のメッセージを出してくれてますが、こころあたりはないですか?
申し訳ありません。
検索などしてみましたがmain関数が2回書かれているとかではなかったです。
ソースコードは載せたいのですがどこでエラーが起きているのかわかりません。
ですので、エラーを載せました。すみません。
リンクエラー: 「Object::s_object が(少なくとも)ふたつ定義されてるから、どっちをリンクしていいのやら...」と言うてます。なのでやっぱりコードみせてくれんと原因はわかりません。
回答2件
あなたの回答
tips
プレビュー