хорошо, у меня есть сомнения, я хочу знать, возможно ли это:
Я использую базу данных с общими данными (строки, целые числа, bools и т. Д.). Всякий раз, когда объект создается или член объекта изменяется, я должен запросить базу данных с определенным действием (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. Поэтому, когда я получаю доступ к этому misc_class, в котором Enemy_Values является членом, я хочу изменить значение, на которое указывает auto_ptr внутри:
misc_class.Enemy_Values[0] = (boost::any)(69);
И здесь я получаю ошибку нарушения. Я пробовал много вещей, и кто-то сказал мне, что я не должен использовать контейнеры auto_ptr или конвертировать туда и обратно с boost :: any. Это то, что я делаю, возможно, или есть лучший и более интуитивный способ?
Заранее спасибо.