簡體   English   中英

運算符重載以在無效輸入上顯示錯誤

[英]Operator Overloading to show error on invalid input

我正在為正在編寫的矩陣類重載加減運算符。 如果有人嘗試添加兩個不同維度的矩陣,例如如果您嘗試int a = a + b; ,我是否有辦法顯示錯誤int a = a + b; 其中b是除int之外的其他類型,它將直接給我錯誤,是否可以對我的班級這樣做? 如果沒有,有什么可能的方法來解決呢?

如果這不是模板,請不要! 編譯時錯誤將由編譯器確定,以便在編譯時檢測出什么,因此,如果在運行時識別矩陣的維,則編譯器將一無所知,並且您必須使用異常或類似的東西來識別錯誤。 但是,如果矩陣的尺寸將由模板參數標識,則編譯器可以在編譯時知道它們並生成錯誤,但是使用這種方法,您將無法在運行時從用戶那里獲得尺寸。

如果矩陣的大小是在編譯時通過例如非類型模板參數設置的,則運算符的striaghtforward模板實現將自動檢測此類不匹配並對其進行錯誤處理。

但是,如果矩陣的大小是在運行時通過構造函數或其他方式設置的,則可能無法在編譯時進行檢測(除非整個調整調用鏈中涉及很多constexpr )。 在這種情況下,您可以做的最好的事情就是大小匹配的運行時斷言。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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