好的,所以我有疑问,我想知道这是否可能:
我正在使用带有通用数据(字符串、整数、布尔值等)的数据库。每当构造对象或修改对象的成员时,我都必须使用特定操作(SELECT 或 UPDATE)查询数据库。首先,这不是与数据库相关的问题,我真正的问题是我有一个 ptr_vector,它保存 boost::any 指向对象成员的指针。在这样的代码中:
class Enemy{
private:
//some private data...
public:
auto_ptr<int> ID_Enemy;
auto_ptr<string> Enemy_Name;
//miscellaneous methods...
};
然后我将要修改的成员传递给另一个杂项类的函数,该函数以 boost::any* 为参数:
misc_class.addValues((boost::any*)(ID_Enemy.get()));
misc_class.addValues((boost::any*)(Enemy_Name.get()));
同一个类接受 any*,并执行以下操作:
auto_ptr<boost::any> val2(val); //being val, the passed any*
Enemy_Values.push_back(val2);
Enemy_Values 是一个 ptr_vector。因此,当我访问这个具有 Enemy_Values 作为成员的 misc_class 时,我想更改内部的 auto_ptr 指向的值:
misc_class.Enemy_Values[0] = (boost::any)(69);
在这里,我得到一个违规错误。我尝试了很多事情,有人告诉我,我不应该使用 auto_ptr 容器或使用 boost::any 来回转换。这是我正在做的可能,还是有更好更直观的方法?
提前致谢。