我遇到了在 C++ 中分配运行时指针的问题。我有一个
base
有 2 个成员线程和线程的类。
class base {
struct base_struct {
int a;
};
base_struct thread;
std::vector<base_struct> threads;
void fn () {}
};
derived1
派生自base
并具有相同的两个成员 (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
并具有相同的两个成员 (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
类的值。
我想知道一些更好的方法来实现这一点。