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

时间:2018-09-09 01:07:51

标签: c++ c++11 compiler-errors

从使用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是否指向任何内存?我假设不是,那么编译如何解决呢?

感谢大家的帮助。

1 个答案:

答案 0 :(得分:1)

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

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