命名空间内出现错误 C2248 友元类

error c2248 friend class inside namespace

本文关键字:C2248 友元 错误 命名空间      更新时间:2023-10-16

我正在尝试设置类似于以下内容的代码:

//Class1.h
namespace A {
    class Class1 {
        friend class Class2
        public:
            Class1();
            ~Class1();
        private:
            void Create() { /*do nothing for now*/ };
    };
}
//Class2.h
#include "Class1.h"
namespace A {
    class Class2 {
        void Test();
    };
} //end namespace A
//Class2.cpp
#include "Class2.h"
namespace A {
    void Class2::Test() {
        Class1 object = Class1();
        object.Create(); //error c2248
    }
}

我收到错误

"错误 101 错误 C2248: '类 1::创建' : 无法访问私有 成员在"类1"中声明"

.什么原因会导致这种情况?我宣布友谊的方式是错误的吗?

我用 Code:Blocks 13.12(SDK 版本 1.19.0)以及 ideone.com 尝试了您的示例。

我为成功编译它所做的唯一更改是

  • 在朋友语句后添加分号
  • 将空块{}添加到Class1的点击率和 DTR 中
  • 当然,我也删除了包含语句(全部放入一个文件中)