我遇到了在C++中分配運行時指針的問題。我有一個 base
類與2成員線程和線程。在C++中使用指針的運行時多態性
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
指針coreectly訪問功能。但 線程(例如值:。threads.size()
始終顯示爲的base
類
我想知道一些更好的方法來實現這個
這甚至不應該編譯,因爲'基地:: base_struct'是'private'。 –
這只是一個樣本:) – deeps8us
這是一個不好的樣本。發佈*正確*代碼非常重要。這使得幫助**更容易。 –