我有一个特殊的配置要构建,我不知道如何写这个:
template <typename VarType>
class A
{
protected:
VarType m_myVar;
}
template <typename VarType>
class B : public A<VarType>
{
}
class C : public B<SpecialType>
{
void DoSomething()
{
m_myVar.PrivateFunction();
}
}
class SpecialType
{
private:
void PrivateFunction()
{
//Do something
}
}
如何使用关键字朋友使其有效?
感谢您的回答。
答案 0 :(得分:1)
只需声明C
为SpecialType
的朋友......
class SpecialType
{
private:
friend class C;
void PrivateFunction()
{
//Do something
}
};
答案 1 :(得分:0)
在理想的世界中,您可以在SpecialType类decl中编写friend C::DoSomething();
,
但是,不,你的唯一选择似乎是friend class C;
(根据nyrl)
不完整类型的朋友和前方声明并不像我们希望的那样好。