【发布时间】:2019-10-29 13:01:43
【问题描述】:
我在下面的代码中遇到了一些错误,导致无法运行,似乎错误在析构函数中但我不知道如何修复它,请帮我检查,谢谢
#include<iostream>
#include<string.h>
using namespace std;
class SinhVien{
private:
static int msv;
char name[256];
char address[256];
int phone;
float point1, point2, point3;
public:
SinhVien(){
}
~SinhVien();
void input(){
cout <<"Nhap ten: ";
fflush(stdin);
gets(name);
cout <<"Nhap dia chi: ";
fflush(stdin);
gets(address);
cout <<"Nhap so dien thoai: ";
cin >>phone;
cout <<"Nhap diem 3 mon: ";
cin >>point1 >> point2 >> point3;
}
void output(){
cout <<"Ma sinh vien: "<<msv<<endl;
msv++;
cout <<"Ho ten: "<<name<<endl;
cout <<"Dia chi: "<<address<<endl;
cout <<"So dien thoai: "<<phone<<endl;
cout <<"Diem 3 mon: "<<point1<<" "<<point2<<" "<<point3<<endl;
}
};
main(){
SinhVien sv;
sv.input();
sv.output();
system("pause");
}
这是一个错误
C:\Users\Admin\AppData\Local\Temp\ccaMkngb.o ex4.cpp:(.text+0x4e): undefined reference to `SinhVien::~SinhVien()'
C:\Users\Admin\AppData\Local\Temp\ccaMkngb.o ex4.cpp:(.text+0x64): undefined reference to `SinhVien::~SinhVien()'
C:\Users\Admin\AppData\Local\Temp\ccaMkngb.o ex4.cpp:(.rdata$.refptr._ZN8SinhVien3msvE[.refptr._ZN8SinhVien3msvE]+0x0): undefined reference to `SinhVien::msv'
C:\Users\Admin\Desktop\OOP\exclass\collect2.exe [Error] ld returned 1 exit status
【问题讨论】:
-
请将错误消息作为文本复制并粘贴到问题中。
-
“似乎错误在析构函数中” 你没有实现任何析构函数。如果您不想要任何析构函数,则只需删除声明即可。
-
除非你的类是一个基类并且你想提供一个空的
virtual析构函数,你不应该编写一个空的析构函数。如果您知道没有什么可破坏的,那么您会告诉编译器的优化器有一个用户定义的析构函数什么都不做,从而使事情变得更糟。 See this -
请edit 将您的代码缩减为您的问题的minimal reproducible example。您当前的代码包含许多与您的问题无关的内容 - 一个最小样本通常看起来类似于一个好的单元测试:只执行一项任务,并为可重复性指定输入值。