簡體   English   中英

如何創建繼承的類對象的數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM