C ++无法从类中调用公共方法:未定义对'<ClassName> :: <MethodName>'的引用

古蒂·哈兹(Guti_Haz)

我有一个类(MethodClass.h和MethodClass.cpp文件)和main.cpp

在主要方面,我先调用构造函数,然后再调用方法。

构造函数运行良好,但对于该方法,我得到了错误:“ Test / main.cpp:13:对`MethodClass :: testMethod()'的未定义引用”

我用这个测试项目简化了问题:

方法类

#ifndef METHODCLASS_H
#define METHODCLASS_H

#include <cstdlib>
#include <iostream>

class MethodClass {
public:
    MethodClass();
    MethodClass(const MethodClass& orig);
    virtual ~MethodClass();

    void testMethod();
private:

};

#endif /* METHODCLASS_H */

MethodClass.cpp:

#include "MethodClass.h"

using namespace std;

MethodClass::MethodClass() {
    cout << "Constructor: MethodClass" << endl;
}

MethodClass::MethodClass(const MethodClass& orig) {}

MethodClass::~MethodClass() {}

void testMethod(){
    cout << "testMethod" << endl;
}

main.cpp:

#include <cstdlib>
#include "MethodClass.h"

#include "MethodClass.h"
using namespace std;

int main(int argc, char** argv) {

    MethodClass mClass = MethodClass();

    cout << "hallo" << endl;

    mClass.testMethod();

    return 0;
}
  • 问题出在main.cpp的最后一行:mClass.testMethod();

如果我对此表示满意,则构造函数可以正常工作-结果:构造函数:MethodClass hallo

  • 同样非常奇怪的是,我什至不必在main.cpp中包含“ MethodClass.h”。

如果我也删除第一行://#include“ MethodClass.h”,它还是可以的,这很正常吗?或者您可以向我解释为什么这行得通吗?

顺便说一句:我正在将Netbeans 8.0.2与MinGW编译器一起使用

莫法特

将您的testMethod的实现更改为以下内容:

void MethodClass::testMethod(){
    cout << "testMethod" << endl;
}

您需要适当地定义.cpp文件中定义的所有函数的作用域。void testMethod()只是一个没有容器类的全局函数testMethod()。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

UnsatisfiedLinkError ClassName.methodName()V

何时在 Java 中以 .<ClassName>methodName() 的形式在方法调用中使用菱形运算符?

新的className()。methodName(); VS className ref = new className();

在CoffeeScript中,当尝试在类中调用方法(@_methodName)时,它将返回未定义的

未定义对“ ClassName :: memberField [abi:cxx11]”的引用

什么是“IList<Classname> MethodName(Class a);” 用于?

C ++中对类成员的“未定义”引用

类c ++中的静态成员未定义引用

C ++使用类Classname;

C ++对模板方法的未定义引用

c ++两个类互相引用错误:“ ClassName”之前的预期类型说明符

C++ 主方法中的“未定义引用”

C Opengl中的未定义引用

对C ++中函数的未定义引用

C 中对 (FUNCTIONNAME) 的未定义引用

如何在lamda表达式中使用super :: methodName引用方法的超类版本

C ++未定义的引用

从go代码调用时对c函数的未定义引用

C ++对动态创建的类成员的功能的未定义引用

无法编译C ++代码-“未定义的引用-”

C++ 类方法包含对静态变量的未定义引用

我想在 c ++ 中运行 cryptominisat,但由于未定义的引用而无法运行它

Cgo:对 [C 函数] 的未定义引用

未定义对'WinMain @ 16'的引用(C ++)

对C头文件的未定义引用

C ++:对ERROR的未定义引用

C ++“未定义引用”错误

对WinMain的未定义引用(C ++ Mingw)

未定义对函数的引用?C ++