我为一个类创建了我的头文件,并在 main.cpp 中#included“theclassname.h”,但是当我尝试编译时,我得到“未定义的对”ClassName::TheConstructor(bool, int*, std::basic_string, std: :分配器>)""
我在我的 Classname.cpp 文件中编写了构造函数和一个名为“ClassName::start”的函数,但由于某种原因,它为此启动函数和我的析构函数提供了这个未定义的参考问题,它也被编码在我的 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
非常感谢你们!