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

作者: gn00618777 (非常念舊)   2016-04-16 20:51:57
: 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
作者: Frozenmouse (*冰之鼠*)   2016-04-16 21:01:00
重看了一下你的code,你沒實作operator=嗎?
作者: gn00618777 (非常念舊)   2016-04-16 21:14:00
F大意思是說 Demo(myClass) a or Demo(myClass) b 之間的 a = b operator 嗎?
作者: Frozenmouse (*冰之鼠*)   2016-04-16 21:21:00
我的意思是你宣告了Demo<T>::operator=卻沒實作它你說的operator對但是參數型態不對
作者: gn00618777 (非常念舊)   2016-04-16 21:50:00
F大,你是對的 我沒有去實作他,實作後可以用了那請問Accessors呢? 我在額外宣告一個 myClass *ptr;Demo<myClass> d; d = mptr; ptr = d->;operator -> 我該如何使用呢?編譯錯誤訊息[Error] expected unqualified-id before ';' token
作者: bibo9901 (function(){})()   2016-04-16 22:18:00
啊…就不是這樣用. 你的書上應該有寫吧?d->method() 會呼叫 (d.operator->())->method()
作者: Frozenmouse (*冰之鼠*)   2016-04-16 22:21:00
operator->照這樣寫應該是讓你的Demo<T>可以像指標一樣操作,像是 d->test() 就會先呼叫->再呼叫回傳值的test()啊 推慢了XD
作者: gn00618777 (非常念舊)   2016-04-16 22:32:00
我懂了! 太感謝 : )))只急著問>"<,謝謝你們的講解

Links booklink

Contact Us: admin [ a t ] ucptt.com