c++ - 类型同名的成员

标签 c++

我想创建一个与返回类型同名的成员函数。示例:

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;
};

键盘上的固定代码:

http://codepad.org/cilF9rKm

关于c++ - 类型同名的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14664497/

相关文章:

c++ - 如何集中 QTreeWidget header

c++ - 多维数组动态分配内存图

c++ - 将套接字绑定(bind)到具有未知 Ip 的特定接口(interface)

c++ - 使用 CMake 构建简单的 Qt UI 应用程序会创建模糊的 UI

c++ - Xcode 4 Mavericks 为 OSX 创建通用二进制文件挂起

c++ - Qt 和 C/C++ 之间的 IPC

c++ - 子类化 Win32 时静态类行为异常

c++ - 使用 ns2 以混杂模式监控数据包

c++ - 使用 c++ 11 constexpr 进行 std::map 初始化

C++打印随机字符