2012-08-22 52 views
0

我已經以下代碼:對象在另一個類的成員函數另一個類的

class A 
{ 
public: 
    A(); 

private: 
    void slot(); 
}; 

第二B類是這樣的:

class B 
{ 
public: 
    B(); 

private: 
    // Some stuff... 
}; 

在file1.cpp有兩個類的靜態對象:

static A a; 
static B b; 

現在在file2.cpp中(包含類實現)我需要在slot函數class A對象b,它是在file1.cpp中創建的。什麼是最好的方式來獲得它? 這是如何使用C++完成的?

+0

這些靜態對象在文件/命名空間範圍或類作用域? – Mankarse

回答

1

static表示「本地翻譯單元」。你試圖做的是不可能的。

的替代設計將使用非靜態的命名空間範圍的對象,如:

globals.hpp:

extern A a; 
extern B b; 

globals.cpp:

#include "globals.hpp" 
A a; 
B b; 

A.cpp:

#include "globals.hpp" 
void A::slot(){ 
    //use b 
} 

您需要請謹慎使用此設計,以確保在b已構建之前不要致電A::slot

+0

Thx爲您的答案。但是不可能使用一些setter/getters,並保持靜態的對象而不是將它們聲明爲extern? – arge

相關問題