0

VS2012 で失敗するコードを次に示します。

class A;

class B
{
    bool A();
    A member; // Error: function B::A is not a type name
};

なぜこれが機能しないのですか?A明らかに、 typeではなく、 typeのメンバーを作成しようとしていますB:A()(コンパイラが正しく指摘しているように、これは型ではありません)。またはの名前を変更せずにこれを回避する方法はありますB:A()class A? member型にしたいことをコンパイラに明示的に伝えることはできますclass Aか?

4

2 に答える 2

3

名前空間を共有しているため失敗します。A()C++ は、一般に、コンテキスト (コンストラクターまたは関数呼び出し)に基づいて型と関数を区別できません。どちらを参照しているかを明確にすることができます。

class A;

class B
{
    bool A();
    ::A member;
};
于 2013-09-11T22:45:26.237 に答える