Только что перешел с программирования на c на c ++, все еще учусь каждый день.
Я застрял с проблемой компиляции.
Допустим, у меня есть класс Element
, класс Log
, а другой производный класс Element
назовем его Rx
. Теперь из класса Log
я хочу получить доступ к class Element
публичному методу. Пожалуйста, предложите какой-нибудь способ сделать это, если вы считаете, что то, что я делаю, не является правильным способом сделать это.
Первый метод, который я попробовал, - добавить указатель на класс Element
в классе Log
, а затем попытался получить доступ к методу.
Вторым способом я попытался передать ссылку / указатель на класс Log:initialize(Element *element)
.
добавление фрагмента кода ниже.
Method1:
class Element {
public:
void add_handler(int param);
// ..... other member and methods
}
class Rx: public Element {
//...... other methods
Log record;
}
class Log {
public:
void initialize() {
e->add_handler(10);
}
private:
Element *e;
}
Method2:
class Element {
public:
void add_handler(int param);
// ..... other member and methods
}
class Rx: public Element {
public:
// ...... other methods
Log record;
}
class Log {
void initialize(Element *element) {
element->add_handler(10);
}
private:
Element *e;
}
в обоих кодах я получаю одну и ту же ошибку " error: недопустимое использование нестатической функции-члена ", которая находится в инициализации функции, где я пытаюсь получить доступ к e->add_handler
.
Хотелось бы понять, почему возникает ошибка и есть ли у вас какие-либо предложения сделать это.
Теперь для нестатической функции у класса нет памяти, поэтому оператор e->add_handler
указывает на какую-либо память? Я предполагаю, что нет, тогда как компиляция разрешает это?
Спасибо всем за помощь.