コンストラクタで初期化する必要がある.hファイルで作成されたオブジェクトがあります。このオブジェクトには、現在のアプリケーションでは5のCOMポート番号が渡されます。このため、私は.hファイルにconst intを作成しました。同じコンストラクタ内のconst intとそのconst intを持つオブジェクトを初期化する
編集:私は
class ClassB
{
public:
ClassB(int comPort);
private:
int m_comPort;
};
ClassB::ClassB(int comPort) :
m_comPort(comPort)
{
}
class ClassA
{
public:
ClassA();
private:
const int comPort;
ClassB B;
};
ClassA::ClassA() :
comPort(5),
B(comPort)
{
}
int main()
{
ClassA A;
return 0;
}
より完全な例を追加しましたコンポートが完全に初期化される前にオブジェクトが初期化されているので、コンポートの値はゴミです。
これを回避する正しい方法は何でしょうか?私は、次を考えることができます:
- は、ヘッダファイルでのconst int型を初期化
- コンストラクタの本体にオブジェクトを作成し、初期化することができますの#define
'comPort'が' B'の前のクラスで定義されている場合、それはガベージではありません。あなたの質問に答えたり、問題を再現するのに十分な情報がここにありません。 – wally
私はより完全な例で謝罪します! – YouKnowNothingJohn
さらに詳しいコード例を追加しました。 – YouKnowNothingJohn