좋아, 그래서 의심을 가지고, 나는이 가능한 경우 알고 싶어문제 부스트 : 어떤
내가 일반 데이터 (문자열의 int로, 데이터베이스를 사용하고, bools, etc ...). 개체가 생성되거나 개체의 멤버가 수정 될 때마다 특정 작업 (SELECT 또는 UPDATE)을 사용하여 데이터베이스를 쿼리해야합니다. 우선, 이것은 DB 관련 질문이 아니며, 내 진짜 문제는 boost :: any를 보유하고있는 ptr_vector가 객체의 멤버에 대한 포인터라는 것입니다. 이 같은 코드 뭔가 :
class Enemy{
private:
//some private data...
public:
auto_ptr<int> ID_Enemy;
auto_ptr<string> Enemy_Name;
//miscellaneous methods...
};
그때 나는 회원이 내가 인수로 부스트 소요 다른 기타 클래스 : 어떤 *의 기능을 수정할 통과 :
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[0] = (boost::any)(69);
그리고 여기, 내가 위반 오류가 : 내가 구성원으로 Enemy_Values을 가지고이 misc_class 액세스 할 때, 나는 내부 auto_ptr은이 가리키는되는 값을 변경하고 싶습니다. 나는 많은 것을 시도해 보았고 어떤 사람은 auto_ptr의 컨테이너를 사용하거나 boost :: any를 사용하여 앞뒤로 변환하면 안된다고 말했다. 이것이 내가 할 수있는 일입니까, 아니면 더 좋고 직관적 인 방식입니까?
미리 감사드립니다.