Re: [問題] c++ operator 的 oeverload

看板C_and_CPP作者 (非常念舊)時間8年前 (2016/04/16 20:52), 8年前編輯推噓3(3016)
留言19則, 3人參與, 最新討論串2/2 (看更多)
: int main(){ : Demo<myClass> d; : myClass *mptr = 0; : //我該如何使用 Demo 類別的 Assigment 和 Accessors 呢? : cout << *d <<endl; //error : d = *mptr; //error : d.operator*(mptr); //error : } : 感謝指教... 感謝板友的指教 的確應該是 d = mptr int main(){ Demo<myClass> d; myClass *mptr; //我該如何使用 Demo 類別的 Assigment 和 Accessors 呢? d = mptr; //訊息如下 } C:\Users\USER\AppData\Local\Temp\ccEmgiM2.o Untitled1.cpp:(.text+0x25): undefined reference to `Demo<myClass>::operator=(myClass*)' C:\Users\USER\Desktop\collect2.exe [Error] ld returned 1 exit status -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 58.115.110.72 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1460811122.A.2D1.html ※ 編輯: gn00618777 (58.115.110.72), 04/16/2016 20:54:03

04/16 21:01, , 1F
重看了一下你的code,你沒實作operator=嗎?
04/16 21:01, 1F

04/16 21:14, , 2F
F大意思是說 Demo(myClass) a or Demo(myClass) b 之
04/16 21:14, 2F

04/16 21:14, , 3F
間的 a = b operator 嗎?
04/16 21:14, 3F

04/16 21:21, , 4F
我的意思是你宣告了Demo<T>::operator=卻沒實作它
04/16 21:21, 4F

04/16 21:23, , 5F
你說的operator對但是參數型態不對
04/16 21:23, 5F

04/16 21:50, , 6F
F大,你是對的 我沒有去實作他,實作後可以用了
04/16 21:50, 6F

04/16 21:52, , 7F
那請問Accessors呢? 我在額外宣告一個 myClass *ptr;
04/16 21:52, 7F

04/16 21:56, , 8F
Demo<myClass> d; d = mptr; ptr = d->;
04/16 21:56, 8F

04/16 21:57, , 9F
operator -> 我該如何使用呢?
04/16 21:57, 9F

04/16 22:01, , 10F
編譯錯誤訊息
04/16 22:01, 10F

04/16 22:02, , 11F
[Error] expected unqualified-id before ';' token
04/16 22:02, 11F

04/16 22:18, , 12F
啊…就不是這樣用. 你的書上應該有寫吧?
04/16 22:18, 12F

04/16 22:19, , 13F
d->method() 會呼叫 (d.operator->())->method()
04/16 22:19, 13F

04/16 22:21, , 14F
operator->照這樣寫應該是讓你的Demo<T>可以像指標一
04/16 22:21, 14F

04/16 22:21, , 15F
樣操作,像是 d->test() 就會先呼叫->再呼叫回傳值的
04/16 22:21, 15F

04/16 22:21, , 16F
test()
04/16 22:21, 16F

04/16 22:22, , 17F
啊 推慢了XD
04/16 22:22, 17F

04/16 22:32, , 18F
我懂了! 太感謝 : )))
04/16 22:32, 18F

04/16 22:33, , 19F
只急著問>"<,謝謝你們的講解
04/16 22:33, 19F
文章代碼(AID): #1N4ZLoBH (C_and_CPP)
文章代碼(AID): #1N4ZLoBH (C_and_CPP)