2016-12-06 62 views
1

C++中有一種方法可以讓編譯器首先實例化一個類中的對象,以便我可以在另一個類中使用它。或者處理這個問題的優雅方式是什麼?C++使用已經實例化的對象

例如:

A.h

class A 
{ 
    int x; 
    A() 
    { 
     //x is being read from a file 
    } 
    void printX(); 
}; 

B.h

class B 
{ 
    void somefunction() 
    { 
     objectA.printX(); 
    } 
} 

main.cpp

main() 
{ 
    A objectA; 
    ... 
    B objB; 
    objB.somefunction(); 
} 
+0

也許通過'objectA'作爲參數'B :: someFunction()'? –

+0

您可以將B作爲成員添加到A或低音對象A到objB的構造函數中。 – Unick

+0

讓'B'有'A'成員?舉一個'A'的引用?這取決於您的使用情況,這對我們來說是未知的。 – StoryTeller

回答

2

你只需要傳遞對象B對您正在嘗試使用的對象的引用,例如...

注意:當您將對象作爲不僅僅是POD的函數參數傳遞時,最好的做法是通過常量引用傳遞它們不會修改它們(這樣您就不會製作整個對象的副本,可能很大,只需傳遞一個指針)。然而,在這種情況下,因爲它現在是一個const引用,所以你只能調用const函數,這就是爲什麼我讓你的printX爲const。據推測,printX並沒有修改A,所以它應該是const。

A.h

class A 
{ 
    int x; 
    A() 
    { 
     //x is being read from a file 
    } 
    void printX() const; 
}; 

B.h

class B 
{ 
    void somefunction(const A& objectA) 
    { 
     objectA.printX(); 
    } 
} 

main.cpp

main() 
{ 
    A objectA; 
    ... 
    B objB; 
    objB.somefunction(objectA); 
}