可以使C++工作酷似MATLAB(見回答以上),但它並沒有什麼太大很有道理。一個很好的跡象了那是你的測試用例本身:
draw('shape','square','width',3,'hight',4); // should draw a square
你拼錯height
。在我通常的代碼中,你會得到(運行時)警告「未知說明符hight
」,並且有4個被忽略而偏向默認值或者什麼都不做。而這個警告在這裏只是因爲我懶得在otherwise
區塊裏寫。許多同事的代碼不會,並且會默默使用默認值或不做任何事情。
現在試着調試,在一個複雜的find some elements on image
功能的中間 - 你不會輕易計算出它是在調用draw
功能的簡單的拼寫錯誤。
所以,反而讓Matlab代碼在C++中,你應該寫這樣的:
void MyDrawingFunct(Shape shape){
...}
void MyDrawingFunct(Curve curve){
...}
在那裏你會吸引你所定義的形狀(如方形,圓形等),和曲線等其他功能或者,如果你想,以防止發言權增加Ellipse
到Shape
,並將它在運行時失敗,你可以有更多的功能 - ...(Square ...)
等
的主要好處是,試圖調用MyDrawingFunct
與說Ellipsoid
會立即通知你錯誤(在編譯時時間),而按照慣用的MATLAB方式執行操作時,您會想知道ellipsoid
是否未實現,或者您是否在某處(如您的示例)發生了錯字。而且你會在運行時觸及它。
這真的是你想要的嗎? C++提供了更清晰的解決方案,您不需要依賴字符串,例如多態。一個好處是,如果出現編碼錯誤,您將得到編譯時錯誤,而不是運行時錯誤。而你的IDE會喜歡你的。 – Bernhard