1. ホーム
  2. c++

[解決済み] c++でデストラクタへの未定義参照エラー?

2022-02-06 17:19:43

質問

以下はそのクラスです。

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;
    }
};

であり、ご覧のようにデストラクタを含んでいます。プログラムの残りの部分は、1つの関数とmainだけです。

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!";
}

エラーになる

  1. objDebug In function `main':|.
  2. C:³³³.cpp|58|undefined reference to `Email::~Email()'|...
  3. C:\UsersStefan﹑Desktop﹑Main.cpp|58|undefined reference to `Email::~Email()'|...
  4. |||=== ビルド終了: エラー 2 個、警告 0 個 (0 分 1 秒) ==== ===?

を、o.print()を含む行に追加しました。 というのは何でしょうか?また、私のコードでいくつかの行を強調する方法を教えてください。

どのように解決するのですか?

デストラクタを宣言していますね。

~Email();

...しかし、そのためのボディを定義していない。という意味かもしれません。

~Email() { }

...それとも、機能がないのであれば、そのままにしておけばいいのでしょうか?

(デフォルトのコンストラクタのボディ宣言も抜けています)