从使用c编程转变为使用c ++,仍然每天学习。
我陷入了一些编译问题。
假设我有一个类friendly
,类Element
和另一个派生类Log
称为Element
。现在从类Rx
中,我想访问Log
的公共方法。如果您认为我做的方法不正确,请提出一些解决方法。
我尝试的第一种方法是在类class Element
中添加一个指向Element
类的指针,然后尝试访问该方法。
我试图将引用/指针传递给类Log
的第二种方法。
在下面添加代码段。
方法1:
Log:initialize(Element *element)
方法2:
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;
}
在两个代码中,我都遇到相同的错误“ 错误:无效地使用了非静态成员函数”,该错误在函数试图访问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
是否指向任何内存?我假设不是,那么编译如何解决呢?
感谢大家的帮助。
答案 0 :(得分:1)
add_handler()
未在public:
下定义:-)
成员函数(也称为方法)在使用private:
关键字时默认为class
(即未指定任何内容),在指定public:
时默认为struct
。 / p>