的構造我想打電話從A類中的方法在其他類呼叫從一個類的方法在其他類
我GOOGLE的構造,但沒有找到任何答案 例如,我有:
class A{
void doWork();
}
class B{
B(){
//here i want to have doWork method
}
}
的構造我想打電話從A類中的方法在其他類呼叫從一個類的方法在其他類
我GOOGLE的構造,但沒有找到任何答案 例如,我有:
class A{
void doWork();
}
class B{
B(){
//here i want to have doWork method
}
}
你告訴我們沒有足夠的選擇合適的解決方案。一切都取決於你想要達到的目標。一些解決方案:
a)將方法標記爲靜態。
class A
{
public:
static void DoSth()
{
// Cannot access non-static A members here!
}
};
class B
{
public:
B()
{
A::DoSth();
}
};
b)你可以實例到位
class A
{
public:
void DoSth()
{
// Do something
}
};
class B
{
public:
B()
{
A a;
a.DoSth();
}
};
c)你可以把A的情況下加入B:
// A remains as in b)
class B
{
private:
A a;
// or: A * a;
public:
B()
{
a.DoSth();
// or: a = new A; a->DoSth();
// Remember to free a somewhere
// (probably in destructor)
}
}
d)你可以從一個派生B:
class A
{
protected:
void DoSth()
{
}
};
class B : public A
{
public:
B()
{
DoSth();
}
};
e)你可以忘記A類,並使DoSt h功能:
void DoSth()
{
// ...
}
class B
{
public:
B()
{
DoSth();
}
}
由於您提供的數據不夠,您必須自行選擇解決方案。
或者
class A
{
public:
static void doWork();
};
class B
{
B(void)
{
A::doWork();
}
};
?
PS:這裏B :: B()將私人
爲了這工作,你會需要它的子類。
所以它會是這樣的:
class A {
doWork();
}
class B : A {
B(){
doWork();
}
}
你也可以做到像那麼回事了HAS-A,而不是IS-A關係:
class A {
doWork();
}
class B {
A myA;
B(){
myA.doWork();
}
}
不知道更多的你在做什麼我會與頂級(IS-A)解決方案,這是我認爲你正在嘗試做的。
「B」有一個指針或引用「A」的實例嗎? doWork()是靜態的嗎? 「B」是「A」的一個子類嗎?否則,您無法從另一個類,構造函數或其他方法中調用方法 –
您可以從「構造函數」的構造函數中調用一個方法(非成員,靜態成員函數或者如果您有'A'成員函數的實例) B',但是沒有「從方法**調用到**構造函數中」,這是沒有意義的... – Nim
關注評論對downvotes?問題不是最好的質量,但很明顯,OP的意圖是什麼。對於專業人士來說,初學者的問題和SO一樣受歡迎,不是嗎? – Spook