gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:57:23 26 4
gpt4 key购买 nike

我为一个类创建了我的头文件并在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com