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
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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