【发布时间】:2018-09-09 18:06:54
【问题描述】:
刚从 c 编程转到 c++,还在每天学习。
我遇到了一些编译问题。
假设我有一个类Element,类Log 和另一个派生类Element 将其称为Rx。现在从Log 类我想访问class Element 公共方法。如果您认为我正在做的方式不是正确的方式,请提出一些方法来做到这一点。
我尝试的第一种方法是在Log 类中添加指向Element 类的指针,然后尝试访问该方法。
第二种方法我尝试将引用/指针传递给Log:initialize(Element *element) 类。
在下面添加代码sn-p。
方法一:
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;
}
在两个代码中我都收到相同的错误“error: invalid use of non-static member function”,它在我试图访问e->add_handler的函数初始化中。
很想了解为什么会出现错误,如果您对此有任何建议。
现在对于非静态函数,该类没有任何内存,那么语句e->add_handler 是否指向任何内存?我假设不是,那么 compile 是如何解决的呢?
感谢大家的帮助。
【问题讨论】:
-
“错误:对非静态成员函数的无效使用”您的 sn-ps 中没有任何内容可能导致该错误。请编辑您的问题并添加minimal reproducible example。
-
发布的代码看起来不错,虽然有这个:
class log record;——也许你的意思是把class Log record;改为? (顺便说一句,class关键字可以省略,例如Log record;将是更常见的语法) -
“在两个代码中我都收到相同的错误“错误:非静态成员函数的无效使用””对于显示的代码仍然不正确。有人会得到有关无法访问的成员的信息。
标签: c++ c++11 compiler-errors