2016-10-17 3 views
-3

Ich versuche, meinen Klienten zu machen, die die A-Klasse ist das Verfahren innerhalb der serverstub Klasse zu nennen, die B. istC++ versucht, eine Objektmethode innerhalb eines anderen Objekts zu nennen

Die Client-Klasse, um die Host-Adresse nehmen sollte Eingabe Ich kann nicht objB globale Variable machen, weil es die zu erstellende Eingabe benötigt. so jetzt, wenn ich versuche, es kompilieren einfach sagen, es wurde nicht innerhalb des Bereichs deklariert.

class A { 
    public: 
     A(string host){ 
     B objB(host); 
     } 
     void amethod(int) { 
     objB.bmethod(); // here 
     } 
}; 

class B { 
    public: 
     B(string host) 
     void bmethod(void) {} 
}; 

main(int argc, char*argv[]) { 
    string host; 

    if(argc>1){ 
    host = string(argv[1]); 
    } else{ 
    host = "http://127.0.0.1:8080"; 
    } 

    A objA(host); 
} 
+1

Machen Sie 'objB' Mitglied Variable. – songyuanyao

Antwort

2

Sie brauchen nur eine Membervariable der Klasse A machen objB, dann können Sie es initialisieren, wenn objA consturcted wird, wie folgt

class A 
{ 
private: 
    B objB; 
public: 
    A(string host); 
}; 

A::A(string host): objB(host) {} 

Dann Sie jede Methode in ObjB anrufen können später aus ObjA.

Verwandte Themen