c++中对析构函数错误的未定义引用
Undefined reference to destructor error in c++?
这是类
class Email{
private:
char to[100];
char from[100];
char subject[200];
char body[1000];
public:
Email();
Email(char *za,char *od,char *tema, char *telo){
strcpy(to,za);
strcpy(from,od);
strcpy(subject,tema);
strcpy(body,telo);
}
~Email();
void setTo(char *to) {strcpy(this->to,to);}
void setFrom(char *from) {strcpy(this->from,from);}
void setSubject(char *subject) {strcpy(this->subject,subject);}
void setBody (char *body) {strcpy(this->body,body);}
char* getTo () {return to;}
char* getFrom () {return from;}
char* getSubject () {return subject;}
char* getBody () {return body;}
void print () {
cout<<"To: "<<to<<endl<<"From: "<<from<<endl<<"Subject: "<<subject<<endl<<body;
}
};
正如你所看到的,它包括一个析构函数。程序的其余部分只是一个函数和主函数。
int checkEmail(char *p){
int n=0,i=0;
while(p[i]!=' ')
{if(p[i]=='@')
n++;
i++;}
if(n==1)
return 1;
else return 0;
}
int main()
{
char od[100],za[100],tema[200],telo[1000];
cout<<"Za: ";
cin>>za;
if(checkEmail(za)){
cout<<"Od: ";
cin>>od;
cout<<"Tema: ";
cin>>tema;
cout<<"Poraka: ";
cin>>telo;
Email o(od,za,tema,telo);
cout<<"Isprateno: ";
o.print();
}
else cout<<"Pogresna adresa!";
}
它给出一个错误
- obj\Debug\main.o||在函数"main"中:|
- C: \Users\Stefan\Desktop\EMail\main.cpp|58|未定义对"EMail::~EMail()"的引用|
- C: \Users\Stefan\Desktop\EMail\main.cpp|58|未定义对"EMail::~EMail()"的引用|
- ||===生成已完成:2个错误,0个警告(0分1秒)===|
在包含o.print()的行中;那是什么呢?还有人能告诉我如何突出显示代码中的一些行吗?
您正在声明一个析构函数;
~Email();
但不是为它定义一个身体。也许你的意思是;
~Email() { }
或者如果它没有任何功能就把它排除在外?
(您还缺少默认构造函数的主体声明)
您必须定义析构函数,而不仅仅是声明它。没有可见的实现。这样做:
~Email() {
//Whatever you want your destructor to take care of
}
如果你不想对析构函数做任何事情,那就不要声明它。还要确保你对构造函数做同样的事情。看起来你可能也有同样的问题。
相关文章:
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用