1

この形式のコンストラクター呼び出しが文書化されている場所を知りたいです。この構文は、Visual Studio バージョン 6.0 以降で動作するようです (G++ を使用してコンパイルしないことはわかっています)。

私は代替案を探しているわけではないことに注意してください。それが良いか悪いかを知る必要はありません。

class Foo
{
public:
    int m_value;
    Foo() : m_value(0) {}
};

Foo o;
o.m_value = 5;
o.Foo::Foo(); // Explicit constructor call!
EXPECT_EQ(0, o.m_value); // True!

この記事を読んでこの構文を最初に見つけました:

http://www.dreamincode.net/forums/topic/160032-finite-state-machines/

この投稿では、次の構文も参照しています。

C++ で別のコンストラクターからコンストラクターを呼び出す (コンストラクター チェーンを実行する) ことはできますか?

この問題について議論している別の投稿:

C++ での明示的なコンストラクター呼び出し

4

2 に答える 2

4

想定される明示的なコンストラクター呼び出しは、有効な C++ 構文ではありません。MSVC がそのようなコードを受け入れるという事実はバグです。

于 2013-10-28T18:06:15.943 に答える