访问父类的成员“非静态数据成员的使用无效”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++的主要内容,如果未能解决你的问题,请参考以下文章