を、私は疑問を持って、私はこれが可能であるかどうかを知りたい:ブーストの問題:: ptr_vectorとブースト:: [OK]を任意の
私は、一般的なデータ(文字列、int型で、データベースを使用しています、ブールなど)。オブジェクトが構築されるかオブジェクトのメンバが変更されるときはいつでも、特定のアクション(SELECTまたはUPDATE)を使用してデータベースをクエリする必要があります。 まず第一に、これはDBに関連する質問ではありません。実際の問題は、オブジェクトのメンバーへのboost :: anyのポインタを保持するptr_vectorがあることです。このようなコードの何かで:同じクラス
misc_class.addValues((boost::any*)(ID_Enemy.get()));
misc_class.addValues((boost::any*)(Enemy_Name.get()));
:
class Enemy{
private:
//some private data...
public:
auto_ptr<int> ID_Enemy;
auto_ptr<string> Enemy_Name;
//miscellaneous methods...
};
その後、私は、引数としてブーストを取り、別の雑多なクラス::いかなる*の関数に変更したいメンバーを渡します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[0] = (boost::any)(69);
そして、ここでは、私が違反エラーを取得:私はメンバーとしてEnemy_Valuesを持っている。このmisc_classにアクセスするときに、私は内部のauto_ptrはが指している先の値を変更したいです。私は多くのことを試しましたが、誰かがauto_ptrのコンテナを使用したり、boost :: anyで前後に変換したりしてはいけないということを教えてくれました。これは私が可能にしているのでしょうか、より良い、より直感的な方法がありますか?
ありがとうございます。