在MATLAB中,從基類繼承matlab.mixin.Heterogeneous
將允許很好的多態性。但是,Coder不支持這種情況。首先,任何人都可以確認編碼器不能使用matlab.mixin.Heterogeneous,如果沒有,有沒有人有一個很好的解決方法?例如,我有一個名爲Shape的ABC的通常設置,它來自handle和matlab.mixin.Heterogeneous。然後我有從形狀派生的矩形和圓形。我希望能有一個數組,如:MATLAB編碼器中的多態性
classdef Shape < handle & matlab.mixin.Heterogeneous
classdef Circle < Shape
classdef Rectangle < Shape
harray = [Rectangle(height, width), Circle(radius)];
在Matlab中,harray成爲一種「1x2 heterogeneous Shape (Rectangle, Circle) array
」
在編碼器,我在生成過程中出現錯誤「Base class 'matlab.mixin.Heterogeneous' cannot be loaded.
」。
任何想法如何接近?在我做一些瘋狂的事情之前,我只想檢查是否有什麼明顯的我失蹤。
謝謝。是的,我的問題確實混合了兩個問題:對象數組和異構對象類型。在某些情況下,單個異構對象會非常有幫助。我的解決方案是製作一個自動生成的「組合器」類,可以在不同的類之間進行內部切換。編碼器支持這將是一個非常好的功能。 – Tony
@Tony當你說「單一異構對象」時,你的意思是你希望能夠將派生類分配給基類變量,然後根據運行時類型進行動態分派?同樣,你是否希望能夠將派生對象傳遞給一個帶有基礎對象的函數?或者我錯過了這一點? –
這完全正確。例如,我有一個通用文件閱讀器的ABC,然後爲每個文件格式導出多個子類。我希望能夠調用實例化類的方法,並根據我實例化哪個類來派發到正確的實現,但所有調用都保持不變。我目前通過一個「聚合」類來實現這一點,這正是你想象的switch語句的混亂,但是封裝了每個派生類的實例。 – Tony