2016-07-22 2 views
1

Ich fand Online die folgenden ein Objekt einer anderen Klasse zu erhalten:Wie habe ich einen Getter, der einen Zeiger eines anderen Objekts zurückgibt?

Class A{ 
......... 
B b; 
......... 
const B& getB()const{ 
return b; 
} 

}; 

und die folgenden ein Zeiger auf ein Objekt einer anderen Klasse zu erhalten:

Class A{ 
......... 
B* b; 
void setB(B *x) { b=x; } 
B *getB() const { return b; } 
......... 


}; 

ich folgende Situation:

Class A{ 
......... 
B** b; 
A(int i){ b = new B*[i] ;} 
......... 
}; 

ich möchte von den B * zurückzukehren A.So dass new a(4)->getB()b[4] zurück. Muss ich folgendes tun:

Class A{ 
    ......... 
    B** b; 
    A(int i){ b = new B*[i] ;} 
    ......... 
    const B&* getB() const{ return b; } 
    ........ 
    }; 

Meine Absicht ist es, ein Objekt aus einer Reihe von Objektzeiger zurück, die ich in den Konstruktor einer anderen Klasse initialisiert.

+2

Ich habe noch nie etwas wie 'const B & * getB()' gesehen. –

+0

"So dass neue a (4) .getB() wird zurück b [4]" sorry, aber ich kann keinen Sinn aus dieser – user463035818

+0

Ich bin neu in C++ BTW so bin ich mir nicht sicher. –

Antwort

0

ein Objekt aus einer Reihe von Objektzeiger einer anderen Klasse zurück to-const-B, das zuvor als fünftes Element des Arrays gespeichert wurde.

const B*& getB() const{ return b[4]; } 

Beachten Sie, dass Ihre Verwendung. new a(4)->getB() ruft ein undefiniertes Verhalten auf, da nur vier Elemente im Array vorhanden sind.

+0

Excellent! Es ist also gültig und ich habe es selbst herausgefunden! –

+1

Beachten Sie den Unterschied zwischen Ihrem Code und mir. Ihr const B & * getB() .. '. Meine: 'const B * & getB() ...'. –

+0

Btw die Verwendung von & ist immer noch verwirrend.Ist es mit B oder getB() verwandt? Ich meine, machst du 'B & getB()' oder 'B & getB()?' –

1
const B** getB() const{ return b; } 

Das ist, was Sie wollen?

Anstatt mit rohen Zeigern zu kämpfen, sollten Sie vielleicht einen Container (std :: vector?) Oder Smart Pointer verwenden. Wenn nein, geben Sie bitte bessere Informationen über Ihr Problem an. Dies wird wieder einen Verweis auf die Zeiger-

EDIT

Ich möchte

Ok so

const B* getB(size_t index) const{ return b[index]; } 
Verwandte Themen