10. oktober 2003 - 18:31
Der er
10 kommentarer og 1 løsning
getters (pointere)
så er den gal igen jeg har følgende getter list<double> TrustValue::getList() { return list; } hvor list er defineret i header filen som list<double> list; Dette virker ikke efter hensigten( dvs object.list og object.getList() indeholder ikke det samme når jeg skriver det ud) Hvad er der galt?
Annonceindlæg tema
10. oktober 2003 - 18:33
#1
Jeg vil tro at du mener: list<double> *list; // skal new'es i constructor list<double> *TrustValue::getList() { return list; }
10. oktober 2003 - 18:35
#2
Din konstruktion vil faktisk lave en kopi af objektet.
10. oktober 2003 - 18:44
#3
arne nu mens jeg har dig 1) void func(Obj* o) { } 2) void
10. oktober 2003 - 18:46
#4
Øh - hvad er spørgsmålet ?
10. oktober 2003 - 18:46
#5
hmm jeg ved ikke hvad der skete der, jeg prøver igen 1) void f(Obj* o) { o->func(); } 2) void f(Obj& o) { o.func(); } 3) void f(Obj o) { o.func(); } Hvad er forskellen på 2 og 3?
10. oktober 2003 - 18:53
#6
#1 = klassisk C pointer #2 = referance a la java #3 = by value d.v.s. kopiering af objektet
10. oktober 2003 - 20:14
#7
Tak Arne, lige inden vi lukker: Dvs #3 kan/bør helt undgås hvis man prøver at programmere a la Java? (læg også lige et svar da du har svaret på det oprindelige spørgsmål)
10. oktober 2003 - 20:23
#8
#3 bør undgåes da den er meget resource krævende.
10. oktober 2003 - 20:23
#9
svar
10. oktober 2003 - 20:31
#10
#include <iostream> using namespace std; class C { private: int v; public: C(int v) { this->v = v; }; int GetV() { return v; }; void SetV(int v) { this->v = v; }; }; void test1(C* o) { cout << o << endl; o->SetV(1234); return; } void test2(C& o) { cout << &o << endl; o.SetV(12345); return; } void test3(C o) { cout << &o << endl; o.SetV(123456); return; } int main() { C *o = new C(123); cout << o << endl; cout << o->GetV() << endl; test1(o); cout << o->GetV() << endl; test2(*o); cout << o->GetV() << endl; test3(*o); cout << o->GetV() << endl; return 0; } giver: 0x3f2c48 123 0x3f2c48 1234 0x3f2c48 12345 0x22ff50 12345 og det ses tydeligt at #3 er noget speciel !
10. oktober 2003 - 23:04
#11
jeg takker arne
Kurser inden for grundlæggende programmering