2010-11-30 1 views
1

У меня есть класс, определенный в отдельном файле, и в какой-то момент мне нужно получить доступ к одной из функций открытого члена из другого исходного файла. По какой-то причине я забыл, как это сделать, и компилятор дает мне ошибку.C++: доступ к публичной функции-члену из-за пределов класса

У меня есть classA.h с определением класса А похожее на это:

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

И отдельный файл classA.cpp с реализацией. А потом в какой-то другой файл blah.cpp я включить заголовок и попытаться получить к нему доступ, как это:

classA::function1(15); 

и мой компилятор отказывается это с ошибкой, что не может найти соответствие для «CLASSA :: function1 (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

Является ли функция1 статическим методом? Если нет, то вам нужен объект этого класса для вызова функции-члена.

Включите classA.h в свой blah.cpp и создайте объект класса A, а затем вызовите функцию-член.