2016-03-30 34 views
-2
#include <iostream> 
using namespace std; 

//To know the car's make, model, color, license number, and the number of minutes the car has been parked 
class ParkedCar 
{ 
    string make, model, color, license_number; 
    int minutes; 
public: 
    ParkedCar(string make = "...", string model = "...", string color = "...", 
     string license_number = "...", int minutes = 0) : make{ make }, model{model}, 
     color{color}, license_number{license_number}, minutes{minutes} { this->make = make; } 
}; 

//To know the number of minutes of parking time that has been purchased 
class ParkingMeter 
{ 
    int purchased_minutes; 
public: 
    ParkingMeter(int purchased_minutes) { this->purchased_minutes = purchased_minutes; } 
}; 

//To report the make, model, color, and license number of the illegally parked car 
//To report the amount of the fine, which is $25 for the first hour, or part of an 
    //hour that the car is illegally parked, plus $10 for every additional hour or 
    //part of an hour that the car is illegally parked 
//To report the name and badge number of the police officer issuing the ticket 
class ParkingTicket 
{ 
    ParkedCar car; 
    ParkingMeter meter; 
    PoliceOfficer officer; 
public: 
    ParkingTicket(const ParkedCar &car, const ParkingMeter &meter, const PoliceOfficer &officer) 
    { 
     this->car = car; 
     this->meter = meter; 
     this->officer = officer; 
    } 
}; 

//To know the officer's name and badge number 
//To examine a ParkedCar object and a ParkingMeter object, and determine whether the car's time has expired 
//To issue a prking ticket (generate a ParkingTicket object) if the car's time has expired 
class PoliceOfficer 
{ 
    string name; 
    int badge_number; 
    ParkedCar car; 
    ParkingMeter meter; 
public: 
    PoliceOfficer(const ParkedCar &car, const ParkingMeter &meter, string name = "...", int badge_number = 000000) 
    { 

     this->car = car; 
     this->meter = meter; 
    } 

}; 

Bu dosyayı okul için yapıyorum ve her şey Park Etme ve Polis Görevlisi sınıflarına ulaşana kadar iyi gidiyor. Bu kurucuları tanımlamaya çalışıyorum ve ikisi de diğer sınıfın varsayılan kurucusu olmadığını söylüyorlar. Bunu nasıl düzeltirim? Teşekkür ederim! :) Yapıcınızda yanaVarsayılan kurucu yok mu?

+2

_ "Bunu nasıl düzeltirim?" _ Varsayılan parametreler sağlayın, bunlar hiçbir parametre almaz veya bunların tümünü varsayılan değere ayarlamalıdır. –

+2

ParkedCar ve ParkingMeter gerçekten bir Polis Görevlisinden _members_? Bir Polis Yetkilisi gerçekten bir isim, rozet, araba ve sayaçtan mı oluşuyor? – kfsone

+0

Evet, 'ParkedCar' ve' ParkingMeter' gerçekten bir PoliceOfficer üyesini _are_. İsim ve rozeti PolisOfisyerine özgü attrbutes, kurucudan alınan 'araba' ve 'metre' nesnelerinin sınıf içi kopyalarını kullanarak değerlerini ve işlevlerini [sonra yapacağım] PolisOfisörü, aksi takdirde mevcut olmayan bilgileri bildirebilmek için. –

cevap

4

PoliceOfficer(const ParkedCar &car, const ParkingMeter &meter, string name = "...", int badge_number = 000000) 
{ 

    this->car = car; 
    this->meter = meter; 
} 

Eğer : car(), meter() başlatıcıları, girişim yazdığı sanki car veya meter için üye başlatıcı (vücutta atamaları başlatıcıları olarak sayılmaz) sahip değildir, bu kadar Var olmayan varsayılan kurucuları çağırmak için Açıkça üye başlatıcıları yazmalıdır:

PoliceOfficer(const ParkedCar &car, const ParkingMeter &meter, string name = "...", int badge_number = 000000) 
    : car(car), meter(meter) 
{ 
} 

(Ayrıca, nesne modeli biraz komik: Polis memuru tek parkmetrelerle vardır)

+0

Evet, kullanıyorum, memur sadece bir park metre, bir park edilmiş araba ve bir park cezası olacak. Programı daha sonra 'ParkingMeter 'nesnesinin bir dizisine sahip olacak şekilde değiştirebilirim. Ayrıca, yardım için teşekkürler! Şimdi sadece 6 hataları var! :) –

0

Öncelikle, ParkedCar (bunu gösterdiği gibi) .

01: bir varsayılan kurucu (bütün argümanlar varsayılan var, bu yüzden hiçbir argüman ile çağrılabilir

gerçek çözüm başlatıcısı listesini kullanmak için yapıcı kullanımını değiştirmektir var

+0

Üzgünüm, ama yaptığınız gibi, 'araba (car_)' ve 'metre (meter_) 'kullanarak,' araba (araba) 'ile biraz daha önce bahsettiğimiz @ Sırasıyla metre (metre) 'noktalar. Parametre adları sınıf öznitelikleriyle aynı olabilir, evet sınıf nesneleri olsa bile, parametre adı hiçbir şey yapmaz, ancak yanıtınız için teşekkür ederiz! :) –

+0

Cevabını benim yazdığım gibi sundu. Cevabını göndermeden önce görmedim (ama ikimizin de aynı şeyi önerdiğimiz şaşırtıcı değil - bu "doğru" yanıttır). Farklı isimler için aynı ismi kullanmaktan kaçınmayı tercih ederim - bu yasal olabilir, ancak kafa karıştırıcı buluyorum. –

İlgili konular