1
我有更多的設計問題。我有一類,說S級,有兩個成員類,P和C P類需要從C類調用成員函數和類P需要調用成員函數從C有沒有對稱設計模式,所以成員類可以指向彼此?
現在我處理的方式這是爲了首先創建C並將它傳遞給P,並反過來使P成爲靜態的,這樣它的成員函數就可以從C中訪問。(以後有可能我會有一個C類的數組,但我會一直有一個P - 這就是爲什麼我可以使它靜態)
我的問題是,有沒有更好的方式來設置呢?我不喜歡讓P變成靜態的 - 理想情況下,我希望C和P彼此指向,但是如何?
一些過度簡化碼被附加。
謝謝!
#include <iostream>
class C;
class P {
C *c;
P (C *x): c(x) {};
public:
static P *p;
static P *get_P(C *x) { if (!p) { p= new P(x);}; return p;};
static P *get_P() { return p;}
void P_function();
void P_other();
};
class C {
public:
C() {};
void C_function()
{
std::cout << "in C_funtion\n";
}
void C_other()
{
P::get_P()->P_function();
}
};
void P::P_other()
{
c->C_function();
}
void P::P_function()
{
std::cout << "in P_funtion\n";
}
class S {
public:
C c;
S()
{
P::get_P(&c);
};
};
P* P::p = NULL;
int main()
{
S s;
s.c.C_other();
P::get_P()->P_other();
}
也許你應該問自己,如果這個循環依賴是非常必要的。可能會出現這種情況,但在我看來他們很少。 – Nobody 2012-02-29 18:51:07