Ste*_*ski 2 c++ destructor class
这是班级
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;
}
};
Run Code Online (Sandbox Code Playgroud)
正如你所看到它包含一个析构函数.程序的其余部分只是一个功能和主要功能.
int checkEmail(char *p){
int n=0,i=0;
while(p[i]!='\0')
{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!";
}
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误
在包含o.print()的行中; 那是什么?也可以某人 告诉我如何在代码中突出显示某些行?
Joa*_*son 29
你宣布了一个析构函数;
~Email();
Run Code Online (Sandbox Code Playgroud)
......但没有为它定义一个身体.也许你的意思;
~Email() { }
Run Code Online (Sandbox Code Playgroud)
......或者如果它没有功能就把它留下来?
(你也错过了默认构造函数的主体声明)
你必须定义你的析构函数,而不仅仅是声明它.没有可见的实施.做这样的事情:
~Email() {
//Whatever you want your destructor to take care of
}
Run Code Online (Sandbox Code Playgroud)
如果你不想对你的析构函数做任何事情,那么就不要声明它.还要确保为构造函数执行相同的操作.看起来你也可能遇到同样的问题.