2016-04-01 22 views
-2

Oldukça eminim ki aptalca bir şey yapıyorum, ama bu bir buçuk saattir ve neyi kaçırdığımı anlayamıyorum.Üye işlevleri çağırılamıyor

Sınıfımdan varsayılan yapıcıyı kullanarak bir nesne oluşturabilirim, ancak eklediğimde aşırı yüklü bir kurucu kullanamıyorum. Dahil ettiğim yazdırma üyesi işlevini veya dahil etmeyi denediğim diğerlerini arayamıyorum. Üç dosyayı bir Code :: Blocks projesine koydum ve aynı sonucu aldım. Aynı sonuçla Dev-Cpp'deki üç dosyayı da denedim. Herhangi bir yardım büyük takdir edilecektir.

Ana Fonksiyon

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

Ben GCC derleyicisi ile Code :: Blocks 16,01 kullanıyorum. Bu dosyalar şu anda bir projede değil. Ben de Windows'u sorunlarınız bu hat ile ilgili olabilir gibi görünüyor 7.

+0

Tam hata, erişmeye çalıştığım işlev için tanımlanmamış bir referanstır. –

cevap

3

çalıştırıyorum: varsayılan kurucuyu çağıran gibi bu görünüyor ederken,

Appt a(); 

Ne yazık ki, aslında a tipi oldukları beyan Appt(), yani, hiçbir argüman almayan ve Appt döndüren bir işlev. Varsayılan kurucusunu çağırmak istiyorsanız, birkaç seçenek vardır:

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

Sonuncusunu tercih ediyorum.

+0

Ah harika! Teşekkür ederim. Ne yazık ki bu benim sorunumu gidermedi. Şimdi onu doğru olarak çağırıyorum, sadece varsayılan yapıcıyı da bulamıyor. –

İlgili konular