構造体でそれらにアクセスするときに、stdコンテナーのベクター、マップ、およびマルチマップ(私が試したもののみ)に書き込むことができないようです。これが私がやろうとしていることの例です:
struct B
{
void* pp;
};
struct A
{
std::vector< B* > veEvents;
};
どこかのクラス関数で
A* d = new A;
B* f = new B;
d->veEvnts.push_back( f ); //<< this line crashes
この方法でコンテナにアクセスしようとすると、STDがクラッシュします。このポインタを防御している行のSTDコードでクラッシュします。ベクトルステートメントのtypedefを含むいくつかの回避策を試しましたが、うまくいきませんでした。回避策として有望と思われるのは、構造体の中に関数を入れて関数を呼び出すことでした...
struct B
{
void* pp;
};
struct A
{
void K( B* f )
{
static std::vector< B* > veEvents;
veEvnts.push_back( f ); //<< this line crashes
}
};
一部のクラス関数で
A* a = new A;
B* b = new B;
a->K(b); //This seems to work.
構造体内で宣言されたコンテナにアクセスするとアクセスの問題が発生するという最初の問題を回避する方法はありますか?