全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:856
推到 Plurk!
推到 Facebook!

矩陣類別繼承後"="的問題

尚未結案
senboy
一般會員


發表:18
回覆:7
積分:5
註冊:2005-01-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-24 21:35:49 IP:140.113.xxx.xxx 未訂閱
我有一個作矩陣運算的父類別 fixMatrix.h  (class Matrix) 衍生一個子類別要加其他的函式 IPMatrix.h (class LMatrix) 但在子類別作A=B+C時assing 會顯示  Could not find a match for 'LMatrix::operator =(Matrix〈double〉)' in function main() 請問我要如何改才能正常運算
fixMatrix.h的宣告
template 
class Matrix
{ 
   protected:
      vector > _m;
      int Row,Col;       public:
   // Assignment operators
   Matrix& operator = (const Matrix& m) _NO_THROW;
}    IPMatrix.h的宣告
class LMatrix:public Matrix 
{只另外定一些函數
}
void main()
{
 LMatrix A;
 LMatrix B;
 LMatrix C;
 Matrix D;
 D=A;    //可正常運算
 A=B C;  //出現上面的錯誤
 A=D;       //出現上面的錯誤,請問我要如何讓這個assing也能運無正常
}
發表人 - senboy 於 2005/03/24 21:38:17 發表人 - senboy 於 2005/03/24 21:38:33
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-29 22:07:33 IP:221.169.xxx.xxx 未訂閱
A=B+C; 會有錯誤訊息,是因為他會用到Matrix的 運算子,但是你並沒有定義 A=D;會有錯誤訊息 是因為左邊為 LMatrix 型態,右邊為
Matrix
然而卻沒有一個等號運算函式,是有這樣的宣告,所以會出錯 解決方法有幾個 1.在LMatrix函式內,宣告一個operator =函式,且參數為
Matrix
2.在LMatrix函式內,宣告一個建構子
LMatrix(Matrix)
,使得進行A=D;時,會自動將D轉換為LMatrix型態。 3.宣告一個全域的 operator = 函式,兩個參數分別為LMatrix和
Matrix
你可以考量哪種方法比較適合,就用哪一種方法
系統時間:2024-05-19 17:21:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!