2016-03-29 16 views
0

Veri üyeleriyle bir sınıf (Sürüm) oluşturmaya çalışıyorum. Üye fonksiyonları, ayarlayıcılardır (basamaklı aramalara izin verilir) ve alıcılar (PLP'yi kullanın ve sabit nesneleri işlemek). İçinde, kullanıcının sayıları girmesine izin verir, daha sonra basamaklı üye işlevlerini tek bir deyimde tüm veri üyeleri için çağırır ve alıcıları çağırarak ve yalnızca veri üyesinin değerine dönmelerini sağlayarak sürümü görüntüler.Basamaklı ve PLP kullanırken bir sınıf oluşturma

Her şeyi kodluyorum, ama bir adımı kaçırıyormuş gibi hissediyorum veya parametrelerle ilgili yanlış bir şey yapıyorum. Benim hatam, ayarlayıcılarım için bir '' '' ihtiyacım olduğunu söylüyor, ama farklı bir problem gibi hissediyorum. Bunu yapmak için tüm notlarımı almadım, birisi bana neyi eksik olduğumu veya düzeltmek için ihtiyacım olduğunu söyleyebilir mi? Teşekkürler!

#include<iostream> 

using namespace std; 

class Version 
{ 
private: 
    int major, minor, service_pack; 
public: 
    Version(); 
    Version& setMajor(int maj); 
    Version& setMinor(int min); 
    Version& setService_pack(int sp); 
    int getMinor(Version *const this); 
    int getMajor(Version* const this); 
    int getService_pack(Version* const this); 
}; 

Version::Version() 
{ 
    major = 0; 
    minor = 0; 
    service_pack = 0; 
} 

Version& Version::setMinor(int min) 
{ 
    minor = min; 
    return *this; 
} 

Version& Version::setMinor(int maj) 
{ 
    major = maj; 
    return *this; 
} 

Version& Version::setMinor(int sp) 
{ 
    service_pack = sp; 
    return *this; 
} 

int Version::getMinor(Version* const this) 
{ 
    return this->minor; 
    (*this).minor; 
} 

int Version::getMajor(Version* const this) 
{ 
    return this->major; 
    (*this).major; 
} 

int Version::getService_pack(Version* const this) 
{ 
    return this->service_pack; 
    (*this).service_pack; 
} 

int main() 
{ 
    int minor, major, service_pack; 
    Version a; 
    cout << "Enter minor, major, and service pack: " << endl; 
    cin >> minor, major, service_pack; 

    a.setMinor(minor).setMajor(major).setService_pack(service_pack); 

    cout << "Major: " << a.getMajor() << "Minor: "<< a.getMinor << "Service Pack: " << a.getService_pack(); 

    system("PAUSE"); 

} 

cevap

0

Sen a.getMinor() diplaying için main() yılında parenbtheses eksik. Parantez olmadan üye işlevinin kendisine başvurursunuz.

Getiricileriniz, ilke olarak değeri döndürürseniz hiçbir argüman almamalıdır. Her durumda, this adlı argümanı geçmekten kaçının. Yapabileceğiniz

Bir başka gelişme, const olarak alıcılar ilan etmek olacaktır:

int Version::getMinor() const 
{ 
    return minor; // this-> is only needed to disambiguate 
} 
+0

Ah iyi göz! ama eğer alıcılarım için parametrelerim doğruysa, biliyor musunuz? – TheEWL

+0

Hayır, alıcılarınız hiçbir argüman almamalıdır. – Christophe

+0

@TheEWL Tamamlamak için cevabımı düzenledim – Christophe

İlgili konular