2016-02-28 158 views
-3

是否有解決此問題的方法?我只想在另一個班級中調用成員函數,而他們兩個在同一個班級中。C++在另一個類中調用成員函數,而他們兩個在同一個類中

class ClassA { 
public: 
    void func() { printf("Hello World\n"); } 
}; 

class ClassB { 
public: 
    void testfunc() { 
     // TODO: call func() in classa; 
    } 
}; 

class ClassAB { 
private: 
    ClassA classa; 
    ClassB classb; 
public: 
    ClassA& getClassa() { return classa; } 
    ClassB& getClassb() { return classb; } 
}; 

int main() { 
    ClassAB classab; 
    classab.getClassb().testfunc(); 
    return 0; 
} 
+0

沒有。 C++不能以這種方式工作。 –

+0

您需要使用::而不是。這是更現代的語言使用。 –

回答

-2

首先讓FUNC()公衆,你做的事。

然後調用FUNC()從外部ClassA的使用:

ClassA::func(); 
+0

將此建議爲答案之前,請親自嘗試。它不會工作。這隻適用於靜態類方法。 –

0

需要ClassA的一個實例調用FUNC。

也許你會通過你有到testfunc((唯一)實例):

// ... 

class ClassB 
{ 
public: 
    void testfunc(ClassA classa) 
    { 
     classa.func(); 
    } 
}; 

// ... 

int main() 
{ 
    ClassAB classab; 

    classab.getClassb().testfunc(classab.getClassa()); 

    return 0; 
} 

在代碼中,ClassA的:: FUNC()是公開的,但不是一成不變的。您只能從ClassA的實例中調用非靜態公共方法屬性。

將func()更改爲靜態,然後是,您可以使用ClassA :: func(),從main或該方法在範圍內的任何位置調用它。

相關問題