【问题标题】:Accessing member of parent class "Invalid use of non-static data member" C++访问父类的成员“非静态数据成员的使用无效”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

标签: c++ xcode


【解决方案1】:
void myFunc()
{
    myClass tmp = foo;
}

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

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

【讨论】:

    猜你喜欢
    • 2016-01-12
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多