2010-11-30 242 views
1

我有一個類在單獨的文件中定義,並且在某些時候我需要從另一個源文件訪問其中一個公共成員函數。出於某種原因,我忘記了如何做,編譯器給我一個錯誤。C++:從類之外訪問公共成員函數

我classA.h與A級類似這樣的定義:

class classA { 
    public: 
    int function1(int alpha); 
} 

並在執行一個單獨的文件classA.cpp。然後在其他一些文件blah.cpp包括我的頭和嘗試訪問它是這樣的:

classA::function1(15); 

和我的編譯器錯誤,它無法找到一個匹配「CLASSA ::功能1(INT拒絕它)」。
如果有問題,我使用Embarcadero RAD studio 2010。

回答

9

要調用「正常」功能,您需要一個實例。

classA a; 
a.function1(15); 

如果你想調用使用classA::那麼它需要static功能。

classA { 
    public: 
    static int function1(int alpha); 
}; 

//... 
classA::function1(15); 

需要注意的是一個靜態方法裏面,你不能訪問任何非靜態成員變量,出於同樣的原因 - 沒有實例提供上下文。

+0

或`classA`需要是一個命名空間。 – Naveen 2010-11-30 11:22:00

1

function1是靜態方法嗎?如果不是,那麼你需要該類的一個對象來調用成員函數。

在blah.cpp中包含classA.h並創建Class A的對象,然後調用成員函數。