2016-11-25 2 views
0

Ich habe ein Programm mit 4 Objekten einer Klasse, sagen PO1, PO2, PO3, PO4. Ich möchte einige Funktionen aufrufen, die diese Objekte als Parameter in einer for-Schleife verwenden. Wie so:C++ Makro, um Werte von Variablen zu verwenden

habe ich versucht, token einfügen, aber alle ich bekam, war Poi, statt den Wert von i bekommen. Gibt es eine Möglichkeit, dies zu tun? (Makro, Funktion, etc.)

Hier ist mein Code

Player PO[4] = {Player{'l',WHITE}, 
       Player{'l',WHITE}, 
       Player{'l',WHITE}, 
       Player{'l',WHITE} 
       }; 

'l' und Weiß sind die Parameter.

+1

Der richtige Weg, dies zu tun ist, um ein Array zu verwenden, anstelle von „PO1“, „PA2“, „PA3“ und „PO 4“. Dafür gibt es Arrays (oder Vektoren). –

+0

Leider hat jedes der Objekte einen nicht standardmäßigen Konstruktor. – user2505282

+0

Wie gesagt: Verwenden Sie ein Array. Sie können ein Array von Objekten mit nicht standardmäßigen Konstruktoren haben, wissen Sie. Oder alternativ ein Array von Referenzen auf die vier Objekte. Das wird auch funktionieren. –

Antwort

1

Basierend auf @ SamVarshavchik Kommentar, habe ich eine Lösung.

Hier ist sie,

Player *PK[4] = {&PO1,&PO2,&PO3,&PO4}; 
for(int i = 0; i < 4; i++}{ 
    func(*PK[i]); 
} 
0

Verwenden Array oder std::vector statt

MyObject Pos[4] = {MyObject{42}, MyObject{51}, MyObject{21}, MyObject{12}}; 

for (auto& po : Pos) { 
    func(Po); 
} 
+0

Warten. Lass es mich einfach versuchen. Scheint nicht zu funktionieren. Ich gebe nur die Fehler ein, die ich bekomme. – user2505282

+0

1) Initialisierung ist nur teilweise geklammert. 2) Falsche Verwendung von typedef MyObject (Der Klassenname) – user2505282

+0

Sie haben irgendwo ein '}' oder vielleicht ein ')' weggelassen. – Peter

Verwandte Themen