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

时间:2015-04-05 01:41:01

标签: c++ xcode

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

所以,我会有这样的事情:

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 ++很新,所以如果对我的问题描述不好,我会提前道歉。提前感谢任何建议!

1 个答案:

答案 0 :(得分:2)

void myFunc()
{
    myClass tmp = foo;
}

定义全局函数,而不是成员函数。添加类范围以使其成为成员函数。

void child::myFunc()
{
    myClass tmp = foo;
}