我想要一个只能实例化为另一个类成员的类。
Id est:
class A
{
public:
A() :
member_()
{};
void letBSayHi() { member_.sayHi(); }
private:
B member_;
};
class B
{
public:
void sayHi() { printf("hola!"); }
};因此:
A alpha; // valid
alpha.letBSayHi(); // # hola!
B beta; // invalid
beta.sayHi(); // impossible单例模式显然不能工作,因为我希望为类B的每个实例提供一个类A的实例。但是,类B的任何实例化(类A-member除外)都应该被禁止。
发布于 2015-04-04 13:46:33
使B成为A的私有嵌套类
class A {
public:
void letBSayHi() { member_.sayHi(); }
private:
class B {
public:
void sayHi() { std::cout << "hola!"; }
};
B member_;
};增编re:实现可以与声明分开,如下所示:
标题:
class A {
public:
void letBSayHi();
private:
class B {
public:
void sayHi();
};
B member_;
};源文件:
void A::letBSayHi() { member_.sayHi(); }
void A::B::sayHi() { std::cout << "hola!\n"; }
// ^^^^-- interesting part here发布于 2015-04-04 13:57:25
嗯,如果你想包括在内,为什么不呢?
class A {
#include "B.hpp"
...
};
https://stackoverflow.com/questions/29447134
复制相似问题