に私はこのようになりますいくつかのコードを見直しされています:遅延コンストラクタC++
class A; // defined somewhere else, has both default constructor and A(int _int) defined
class B
{
public:
B(); // empty
A a;
};
int main()
{
B* b;
b = new B();
b->a(myInt); // here, calling the A(int _int) constructor,
//but default constructor should already have been called
}
は、この仕事をしていますか?デフォルト後に特定のコンストラクタを呼び出すと、既に呼び出されていますか?
このような場合があります。ありがとうございます。 –
関数が宣言されている場合は、 "A :: operator()(int)"を呼び出すだけですか?私はあなたがこの機能が宣言されたと判断できることに感心しました! –
@リチャード:あなたが何を得ているのか分かりません。関数が宣言されていない場合、コードはコンパイルされません。したがって、コード*がコンパイルされると仮定すると、演算子を定義する必要があります。 あいまいさはありません。使用されている構文がコンストラクタを呼び出すことはできません。これを行うには、代わりにb-> a :: myIntを書く必要があります。 Richの質問に表示される構文はoperator *()のみを呼び出すことができます。 – jalf