2016-04-01 13 views
-2

私はおそらく何か愚かなことをしていると確信していますが、私はこれを1時間半しています。メンバー関数を呼び出すことができません

デフォルトのコンストラクタを使用してクラスからオブジェクトを作成できますが、オブジェクトを追加するときにオーバーロードされたコンストラクタを使用することはできません。私がインクルードしたプリントメンバー関数や、インクルードしようとしている他の関数を呼び出すことはできません。私は3つのファイルをCode :: Blocksプロジェクトに入れ、同じ結果を得ました。 Dev-Cppの3つのファイルも同じ結果で試しました。どんな助けでも大歓迎です。

主な機能

#include <iostream> 

#include "Appt.h" 

using namespace std; 

int main() 
{ 
    Appt a(); 
    a.print(); 
} 

Appt.h

#ifndef APPT_H 
#define APPT_H 

#include <iostream> 
#include <string>  
using namespace std; 

class Appt 
{ 
    public: 
     Appt(); 

     void print(); 

    private: 
     string description; 
}; 

#endif // APPT_H 

Appt.cpp

#include "Appt.h" 

using namespace std; 

Appt::Appt() 
{ 
    description = "No Description"; 
} 

void Appt::print() 
{ 
    cout << description << endl; 
} 

私は、GCCコンパイラでコード::ブロック16.01を使用しています。これらのファイルは現在プロジェクトにはありません。私はまた、Windows 7.

+0

正確なエラーは、私がアクセスしようとしている機能に対する未定義の参照です。 –

答えて

3

を実行しているあなたの問題は、このラインに関連する可能性があるように見えます:

残念ながら
Appt a(); 

、それはデフォルトコンストラクタを呼び出すように、これは見えますが、それは実際にタイプのものであるとaを宣言しますAppt()、つまり引数をとらずにApptを返す関数です。デフォルトのコンストラクタを呼び出す場合は、いくつかのオプションがあります:

Appt a; 
Appt a = Appt(); 
Appt a{}; // requires C++11 

私は最後のものを好むでしょう。

+0

すごい!ありがとうございました。残念ながらそれは私の問題を解決しませんでした。今私はそれを正しく呼んでいます。単に、デフォルトのコンストラクタも見つけられません。 –

関連する問題