我有,我不能找到一个妥善的解决办法的情况下。我需要有模板基类和一个经理类来为那个基类做些工作。下面是代码访问修饰符:私人与保护
class Base;
class Manager
{
public:
void DoSomethingTo(Base * bclass)
{
if(bclass->PrivateVar == 0)
// Some code
}
}
class Base
{
protected:
int PrivateVar;
friend class Manager;
};
template<class T>
class TempBase : public Base
{
private:
Manager * man;
public:
void DoWork()
{
PrivateVar = 0;
man->DoSomethingTo(this);
}
}
我的问题是PrivateVar变量实际上必须是私有的TempBase并没有从TempBase派生类入店,但因为我不能将它的指针传递给Manager::DoSomethingTo()
,我必须从基地获得它类和基类必须拥有PrivateVar。由于我在TempBase中使用PrivateVar,因此它不能私有到Base,这使得它可以从TempBase的子类访问。
我怎么能写TempBase类,以便PrivateVar是一个私有成员,而它可以从Manager::DoSomethingTo()
达成?
感谢
从设计,我不知道为什么`基地`需要访问。显然`PrivateVar`纯粹是一个`TempBase`的东西,它转移到`Base`,以便`Manager`可以访问它。在阅读代码时,我曾有过解开一盘意大利面的印象:/ – 2010-11-23 13:09:32
@Matthieu M .:对于为什么`Base`需要访问,你绝对正确。对于混乱的代码感到抱歉。 – 2010-11-23 13:19:23