我正在尝试实现一个从父类继承构造函数的子类,然后访问在该构造函数中初始化的父类的成员。
所以,我会有这样的事情:
parent.h:
#include "myClass.h"
class parent
{
public:
myClass foo;
virtual void myFunc();
parent(int a);
};
parent.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在main中没有问题)。
我对c ++很新,所以如果对我的问题描述不好,我会提前道歉。提前感谢任何建议!
答案 0 :(得分:2)
void myFunc()
{
myClass tmp = foo;
}
定义全局函数,而不是成员函数。添加类范围以使其成为成员函数。
void child::myFunc()
{
myClass tmp = foo;
}