クラスのプライベートコンストラクターに到達できるようにするために、クラスと友達になろうとしています。
some_file.h で
class B;
namespace some_name {
class A {
public:
A() {}
private:
A (int x) {}
friend class ::B;
};
}
other_file.h 内
#include "some_file"
namespace {
class B {
protected:
A* get_a(int x) { return new A(x); }
};
}
このコードをコンパイルすると、エラーが発生します: 'some_name::A::A(int)' is private.
私は今、非公開です。これが私が B と友達になった理由です。ここで何が間違っているのでしょうか? コンストラクターと友達になりませんか?名前空間の問題はありますか?
ありがとう