#include <iostream>
class FooParent
{
public:
FooParent(int* new_p_bar)
{
p_bar = new_p_bar;
}
public:
int* p_bar;
};
class FooChild : public FooParent
{
public:
int bar;
public:
FooChild(int new_x)
:FooParent(&bar)
,bar(new_x) \\ point of concern
{}
};
int main()
{
FooChild foo(8);
std::cout << foo.bar << std::endl;
}
上記の例は、私が望むように動作します。つまり、ポインターp_bar
を にリンクしますbar
。ただし、私の懸念は、コンストラクターがまだ呼び出されていないメンバーを指していることです。
このコードは有効ですか、それとも標準はそれについて何か言いたいことがありますか? そうでない場合、代替手段は何ですか。
注: 私のアプリケーションbar
ではオブジェクトBar
(int
ではない) ですが、これには何らかの意味がありますか?