如果类"A"具有指向另一个类的指针,则"B" A 可以访问 B 类公共方法

If a class "A" has a pointer to a another class "B" can A access class B public methods

本文关键字:访问 方法 另一个 指针 如果      更新时间:2023-10-16

刚从c编程转移到c++,每天都在学习。 我遇到了一些编译问题. 假设我有一个类Element,类Log和另一个派生类Element称之为Rx。现在从第Log类我想访问class Element公共方法。如果您认为我的做法不正确,请提出一些方法。 我尝试的第一种方法是在类Log中添加指向Element类的指针,然后尝试访问该方法。 第二种方法我试图将引用/指针传递给类Log:initialize(Element *element)。 在下面添加代码片段。

方法1:

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;
}

方法2:

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;
}

在两个代码中,我都收到相同的错误"错误:无效使用非静态成员函数",该错误位于函数初始化中,我正在尝试访问e->add_handler

很想了解为什么会出现错误,以及您是否有任何建议。

现在对于非静态函数,该类没有任何内存,因此语句e->add_handler它是否指向任何内存?我假设不是,那么编译如何解决它?

感谢大家的任何帮助。

add_handler()未在public:下定义 :-(

成员函数(也称为方法(在使用class关键字时默认private:(即如果未指定任何内容(public:指定struct