2

独自の専用の cpp/h ファイル コンボに静的専用メンバーを持つクラスを持つプログラムを作成しました。おそらく、コードでこれらの静的メンバーを使用しようとすると、リンカーの段階で「未解決の外部」エラーが発生する可能性があります。エラーが発生している cpp ファイルに h ファイルを含めることを覚えています。理解できない。これは間違った設計アプローチですか?

基本的に、サードパーティ API の一部であるグローバル オブジェクトをプログラム全体で使用できるようにしたいので、すべてを 1 つのクラスにまとめ、すべてを静的メンバーにしました。また、クラスがインスタンス化されないようにするために、空のプライベート コンストラクターも作成しました。これは賢明なアプローチですか?静的メンバーはすべてポインターであり、新しいオブジェクトを割り当てて、それぞれを静的 poonter にアタッチすることから始めようとしました。このアプローチに問題はありますか?

ありがとう!

4

2 に答える 2

3

変数をヘッダーで宣言するだけでなく、実際にどこかで変数を定義することを覚えていますか?

Foo.hpp:

#ifndef FOO_HPP
#define FOO_HPP

class Foo {
public:
  static int bar;
};

#endif

Foo.cpp:

#include "Foo.hpp"

int Foo::bar; // <-- This being the critical line.
于 2011-07-06T20:42:10.387 に答える
0

サードパーティ ライブラリのグローバル オブジェクトにアクセスしている場合は、そのライブラリにリンクしていることを確認する必要があります。ライブラリのヘッダーに対してコンパイルするだけでは、それはできません。

于 2011-07-06T20:37:14.550 に答える