![](/img/trans.png)
[英]C++ How do I create a dynamic array of objects inherited from an abstract class?
[英]How do I create an array of inherited class objects?
我在當前項目中工作時遇到麻煩。 該項目包括從文件中獲取數據行,並創建一個均繼承基類的類對象數組。
因此,這是我到目前為止所了解的:
class BaseClass {
// create empty and non-empty constructor
}
class SubClass : public BaseClass {
// create constructor specifically for this class
}
int main() {
BaseClass *array[size];
array[index] = new SubClass();
return 0;
}
因為SubClass繼承了BaseClass,所以當我向數組添加新對象時,它應該是SubClass類型,對嗎?
當我調試程序並查看該對象時,它不允許我指向任何SubClass方法/變量進行操作,而這正是我需要做的。
現在,當我在尋找答案時,我遇到了靜態轉換,因此我嘗試了以下程度:
(static_cast<SubClass*>(array[index])->subclass_variable) = some_value
但這似乎也不起作用,對此將提供任何幫助。
一種解決方法是在基類中定義接口 (虛擬方法),並在SubClass
實現 :
class BaseClass {
// create empty and non-empty constructor
virtual void f() = 0;
}
class SubClass : public BaseClass {
// create constructor specifically for this class
virtual void f() { std::cout << "I am your SubClass" << std::endl; }
}
然后可以調用array[index]->f();
。
另一種方法是在類上訪問/類型切換,另一種方法是NVI,但這是更高級的主題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.