【发布时间】:2016-06-11 22:29:10
【问题描述】:
我正在尝试更改对象内部类的私有变量,该对象在该类内部初始化。
我的意图可以从下面的简单示例中得出。
从obj 调用的Increment 应该增加BaseClass::stuff。
template <typename ObjectType>
class BaseClass{
public:
int Increment(){
return obj.Increment();
}
private:
int stuff = 0;
ObjectType obj;
};
class ObjectType{
public:
int Increment ()
{
return BaseClass<ObjectType>::stuff++;
};
};
int main () {
BaseClass<ObjectType> base;
base.Increment(); // should increase stuff by 1;
}
我能想到的一种方法是将内容作为参数传递给obj.Increment()。
有没有一种方法可以在不将其作为参数传递的情况下实现这一点?
【问题讨论】:
-
使用
friend关键字? -
一个对象不知道它属于哪个对象。如果你添加这些知识,你通常会得到非常脆弱的代码。
标签: c++ class templates object