问题描述
在 C++ 中使构造函数成为朋友是可能的:
class A {
A() { B b; }
class B {
B(){};
friend A::A();
};
};
如何使用模板类实现相同的效果:
template< typename T >
class EnforceOnlyOneIntConstructor
{
EnforceOnlyOneIntConstructor() {}
//friend T::T(int);
//friend T::OnlyOneIntConstructor(int);
friend void T::regularFun(int);
};
class OnlyOneIntConstructor
{
//EnforceOnlyOneIntConstructor< OnlyOneIntConstructor > m_trick;
public:
OnlyOneIntConstructor(int) //: m_trick{}
{}
void regularFun(int) {
EnforceOnlyOneIntConstructor< OnlyOneIntConstructor > m_trick;
}
};
int main() {
OnlyOneIntConstructor a(10);
}
我不知道这是否可能。没有注释掉有问题的部分,编译器会给出一个错误: 错误:C++ 要求所有声明都使用类型说明符
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)