2013-10-18 24 views
0

我有兩個類,例如類A和B. B是封裝在私人下的A;C++嵌套類與對象的1作爲私人

class A 
{ 
    private: 
    int x; 
    int y; 
    B b; 

    public: 
      void set(int , int, int, int, int); 
      void setX(int); 
      void setY(int); 
      string toString(); 
}; 

void A::set(int high, int low, int middle) 
{ 
    B(high, low, middle); 
    setX(x); 
    setY(y); 

} 


void A:: setX(int x) 
{ 
this -> x = x;  
} 

void A:: setY(int y) 
{ 
    this -> y = y; 
} 

string A::toString() 
{ 

     string str; 
    ostringstream convert; 
    convert << getlow(); 
    str = convert.str(); 

return str; 
} 


class B 
{ 
    private: 
      int low; 
      int middle; 
      int hight; 

    public: 
      B(); 
      B(int, int, int); 
      int getLow(); 
      int getMiddle(); 
      int getHigh(); 
}; 
與我INT主要另一個類

int main() 
{ 
    int test1,test2,test3,test4,test5; 

    // with lots of codes 

    A a; 
    a.set (test1,test2,test3,test4,test5); 


} 

,當我從int主一些值,我通過在3個值成集,初始化對象B.當我使用getB功能,我得到的只是0的值,或者根本不顯示。 (我有一個構造函數接受參數並將所有int設置爲0)。有人能夠啓發我嗎?請不要告訴我不要使用這個。我是C++的新手,所以引導了我。

+2

節目B的代碼和主要的()爲好。我沒有看到有任何返回類型的函數。另外,在不改變對象的成員函數末尾使用const – Raja

+2

由於很多原因(無返回類型,混淆類和實例名稱等),此代碼不會編譯。請直接從有效的代碼複製/粘貼。 –

+0

你的方法缺少返回類型......你應該真的粘貼可編譯的代碼片段,或者如果爲你編譯,那麼你應該真的啓用警告(-Wall -Wextra for gcc)並修復它們,作爲第一件事。或者如果你不能解決這些問題,那麼就可以通過編譯器消息(和它們指向的行)來提問。 – hyde

回答

1

變化至少A類的定義如下方式

class A 
{ 
    private: 
      B b; 
      int x; 
      int y; 

    public: 
      void set(int, int, int); 
      int getB(); 
}; 

void A::set(int high, int low, int middle) 
{ 
    b = B(high, low, middle); 

} 

int A::getB() 
{ 

    return b.getLow(); 
} 
+0

omg我怎麼可能錯過了這一點。非常感謝。我現在感覺非常愚蠢 – June

1
在組你不初始化B會員變量

A::set(int high, int low, int middle) 
{ 
    B(high, low, middle); 
}