我想创建一个与返回类型同名的成员函数。示例:
class A { };
class B {
public:
A& A() { return *a; }
private:
A* a;
};
但是,编译器不允许我这么做。我尝试将成员返回类型的类型更改为 ::A
(如建议的 here ,但无济于事。我知道我可以只更改成员名称,但我只是想了解为什么有这个限制,我的解决方法是什么。
最佳答案
如果您声明一个名为 A
的成员,则在没有显式命名空间的情况下,您将无法再使用类型 A
。您需要将每次出现的类型 A 更改为 ::A
。
更正后的代码如下所示:
class A { };
class B {
public:
::A& A() { return *a; }
private:
::A* a;
};
键盘上的固定代码:
关于c++ - 类型同名的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14664497/