c++ - 主要 C++ 的类问题

标签 c++ class constructor

我为一个类创建了我的头文件并在 main.cpp 中#included“theclassname.h”但是当我尝试编译时我得到“ undefined reference ”ClassName::TheConstructor(bool, int*, std::basic_string , std::分配器 >)""

我在我的 Classname.cpp 文件中编写了构造函数和一个名为“ClassName::start”的函数,但出于某种原因,它为这个启动函数和我的析构函数提供了这个 undefined reference 问题,它也在我的 cpp 中进行了编码文件。我在 main 中对头文件中编码的函数进行的每次调用都不会触发此错误,但对我的 .cpp 文件中编码的函数进行的每次调用都会触发此错误。

我看过很多关于此的帖子,但我已经使用正确的参数和返回类型对它们进行了正确编码,并确保函数名称与头文件中定义的名称相同。除了拼写错误之外还有什么可能导致此问题,因为我已经检查了 10 多次。

谢谢

#ifndef THECLASSNAME_H
#define THECLASSNAME_H
#include <iostream>

class TheClassName {
 public:
   TheClassName(bool theBool=true, int *theArray=0,
        std::string message="-1");
~TheClassName();
void start();
void setBool(bool theBool) {aBool=theBool;}
 bool getBool() {return aBool;}
 void setMessage(std::string message) {mssg=message;}
 std::string getMessage() {return mssg;}
 std::string getHello() {return hello;}
private:
int *anArray;
bool aBool;
std::string mssg;
std::string hello;

void aFunction1(bool);
void aFunction2();
void aFunction3();

void aFunction4();
};

 #endif

抱歉大家刚刚修好了!在我的 makefile 中我做了

exec1: main.o classname.o
     g++ -o exec1 main.o

代替

exec1: main.o classname.o
     g++ -o exec1 main.o classname.o

非常感谢你们!

最佳答案

听起来您在链接器阶段遇到了错误。您是否也在编译包含 C++ 类定义的文件,而不仅仅是包含头文件?您需要有一个单独的 C++ 文件,其中包含您类的函数定义,还要编译该文件并将目标文件包含在链接器命令行中,这样您在链接最终可执行文件时就不会出现 undefined reference 错误。

关于c++ - 主要 C++ 的类问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386505/

相关文章:

c++ - 编译器在 C++ 中生成默认构造函数

flutter - 如何检查是否使用 dart 中的命名构造函数创建了元素?

c++ - 如何让 BOOST_TEST_MESSAGE 显示在屏幕上?

c++ - 使用 glDrawPixels() 在 OpenGL 上绘制像素

javascript - 如何检查一个 Javascript 类是否继承了另一个类(不创建对象)?

c++ - 是否可以在不声明其方法的情况下保留裸类定义?

java - NullPointerException 运行时错误

c++ - 如何从 Mask 中获取减去的视频

c# - Delphi7中使用的C++ DLL函数

java - 空指针异常 | `this` 内部枚举构造函数导致 NPE