- 论坛徽章:
- 0
|
class Context {
public:
inline Context& operator =(const Context& _xctx){mp =_xctx.mp;return *this;} //注意这里
private:
map<string,string> mp;
};
这个是我定义的要传递的对象。然后我分别有两个接口,分别是A,B,A有子类A'实现,B有子类B'实现,而A,B中都有Context类型的私有成员,也都有setContext方法:
。。。。
void setContext(Context& _xctx){xctx = _xctx;}
private:
Context xctx;
现在,我这样做:
Context ctx;
A * pa=实例化(A').
pa->setContext(ctx);
在A'的实现中又这样做:
B * pb = 实例化(B');
pb->setContext(xctx); //这里的xctx是A/A'的私有成员,已经在上面设置过了。
.....
结果在A'中执行到setContext程序就出问题,估计是异常退出。这个是为什么呢?
另外,若我想把 Context作为一个整体的上下文对象,在A',B'执行中对它所有的更改最终都会影响到最外层的那个ctx,那么我是不是就不能在=重载那里用const Context&而应把const去掉? |
|