C++ でのランタイム ポインターの割り当ての問題に悩まされています。私は
base
2つのメンバースレッドとスレッドを持つクラスを持っています。
class base {
struct base_struct {
int a;
};
base_struct thread;
std::vector<base_struct> threads;
void fn () {}
};
derived1
から派生しbase
、同じ 2 つのメンバー (thread
および
threads
) を持ちますが、型は異なります。
class derived1 : public base {
struct derived_struct11 : public base_struct {
int b;
};
derived_struct11 thread;
std::vector<derived_struct11> threads;
void fn () {
printf();
}
};
derived2
も派生しbase
、同じ 2 つのメンバー (thread
およびthreads
) を持ちますが、型は異なります。
class derived2 : public base {
struct derived_struct22 : public base_struct {
int c;
};
derived_struct22 thread;
std::vector<derived_struct22> threads;
void fn () {
printf();
}
};
実行時にのみ、使用するかどうかを知ることができderived1
ますderived2
。だから私は次の方法でそれをやった:
base base_obj;
derived1 derived1_obj;
derived2 derived2_obj;
base *ptr ;
実行時関数:
{
if (condition == yes)
ptr = &derived1_obj;
else
ptr = &derived2_obj;
}
問題は、ポインターを使用して関数に直接アクセスできることですthis
。ただし、スレッドの値 (例:threads.size()
は常にbase
クラスの値として表示されます。
これを実装するためのより良い方法を知りたいです。