小编Dan*_*ich的帖子

如何从另一个命名空间中的全局命名空间定义友元类?

在之前的问答(如何在另一个 C++ 命名空间中定义全局命名空间中的友元?)中,给出了在引用全局命名空间中的函数的命名空间内定义友元函数的解决方案。

我对classes有同样的问题。

class CBaseSD;

namespace cb {
class CBase
{
    friend class ::CBaseSD; // <-- this does not work!?
private:
    int m_type;
public:
    CBase(int t) : m_type(t) {};
};
}; // namespace cb

class CBaseSD
{
private:
    cb::CBase*  m_base;
public:
    CBaseSD(cb::CBase* base) : m_base(base) {};
    int* getTypePtr()
    { return &(m_base->m_type); };
};
Run Code Online (Sandbox Code Playgroud)

如果我将 CBaseSD 放入命名空间,它就可以工作;例如,朋友类 SD::CBaseSD;但我还没有找到适用于全局命名空间的咒语。

我正在使用 g++ 4.1.2 进行编译。

c++ namespaces global friend

5
推荐指数
1
解决办法
4444
查看次数

标签 统计

c++ ×1

friend ×1

global ×1

namespaces ×1