访问父类的成员“非静态数据成员的使用无效”C++

Posted

技术标签:

【中文标题】访问父类的成员“非静态数据成员的使用无效”C++【英文标题】:Accessing member of parent class "Invalid use of non-static data member" C++ 【发布时间】:2015-04-05 01:41:01 【问题描述】:

我正在尝试实现一个从父类继承构造函数的子类,然后访问在该构造函数中初始化的父类的成员。

所以,我会有这样的东西:

父.h:

#include "myClass.h"

class parent


public:

    myClass foo;

    virtual void myFunc();

    parent(int a);

;

父.cpp:

#include "parent.h"

parent::parent(int a)


    foo = myClass(a);



 void parent::myFunc()

 (do stuff)

child.h:

#include "parent.h"

class child: public parent


public:

    using parent::parent;
    void myFunc();

;

child.cpp:

#include "child.h"

void myFunc()

    myClass tmp = foo;

问题是当我尝试访问 child.cpp 中的 myClass (foo) 实例时,我收到错误“非静态数据成员 'foo' 的使用无效”。奇怪的是,我可以从主程序访问 foo(child.foo 在主程序中没有问题)。

我对 c++ 很陌生,所以如果这是对我的问题的错误描述,我提前道歉。提前感谢您的任何建议!

【问题讨论】:

void myFunc() 不是child 的成员,而是一个常规的、非成员的、独立的函数,恰好具有相同的名称。奇怪的是,你知道的足以正确定义parent::myFunc 【参考方案1】:
void myFunc()

    myClass tmp = foo;

定义一个全局函数,而不是一个成员函数。添加类作用域使其成为成员函数。

void child::myFunc()

    myClass tmp = foo;

【讨论】:

以上是关于访问父类的成员“非静态数据成员的使用无效”C++的主要内容,如果未能解决你的问题,请参考以下文章

使用嵌套类函数时非静态数据成员的使用无效,但函数未嵌套时可以吗?

从嵌套类的函数访问父级的非静态成员

如何从 C++ 中的子类访问父类的成员变量?

C++ 类的继承一(访问控制)

C++中子类的变量能不能覆盖父类的变量?

子类如何访问父类