0

这是一些在 VS2012 中失败的代码:

class A;

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

为什么这不起作用?显然,我正在尝试创建 type 的成员A,而不是 type的成员B:A()(这不是类型,正如编译器正确指出的那样)。有没有办法解决这个问题而不改变任何一个B:A()或的名称class A?我可以明确告诉编译器我想member成为 typeclass A吗?

4

2 回答 2

6

有可能,您只需要明确说明您要使用该类 A

class A;

class B
{
    bool A();
    class A member;
};
于 2013-09-11T22:43:42.047 回答
3

它失败了,因为它们共享一个命名空间。C++ 通常不能根据上下文区分类型和函数(是A()构造函数还是函数调用)。您可以明确指出您指的是哪一个,例如

class A;

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