2016-05-10 9 views
-1

すべての属性を表示するdisplay()メソッドを追加する必要があります。私はすべての値の型を出力するメソッドをどのように作成できるのかは分かりません。
私はDisplay()を無効にしてみましたが、.cppファイルで定義したときに戻ったり他の値の型を使用することはできません。すべての属性、つまりm_model、m_speed、およびm_engine_sizeを表示または呼び出す必要があります。すべての属性を表示するDisplay()メソッドを作成する必要があります

#pragma once 

class Car 
{ 
private: 
int m_speed; 
int Maxspeed; 
void turnOnBrakeLight(void); 
public: 
Car(void); 
Car(int Speed); 
Car(float engine_size, int speed); 

char m_model[50]; 
float m_engine_size; 
void accelerate(void); 
void brake(void); 
void Setspeed(int setspeed); 
int getspeed(); 
void Setmaxspeed(int Setmaxspeed); 
int Getmaxspeed(); 
}; 

/

# include "Car.h" 
void Car::accelerate(void) 
{ 
m_speed++; 
} 

void Car::brake(void) 
{ 
m_speed--; 
turnOnBrakeLight(); 
} 

void Car::turnOnBrakeLight(void) 
{ 
// turn on brake light 
} 
void Car::Setspeed(int setspeed) 
{ 
m_speed = setspeed; 
} 

int Car::getspeed() 
{ 
return m_speed; 
} 

void Car::Setmaxspeed(int Setmaxspeed) 
{ 
Maxspeed = Setmaxspeed; 
} 
int Car::Getmaxspeed() 
{ 
return Maxspeed; 
} 

Car::Car(void) 
{ 
m_speed = 0; 
m_engine_size = 0.0f; 
m_model[0] = 'N'; 
m_model[1] = 'o'; 
m_model[2] = 'n'; 
m_model[3] = 'e'; 
m_model[4] = '\0'; 

} 
Car::Car(int speed) 
{ 
m_speed = speed; 
m_engine_size = 0.0f; 
m_model[0] = 'N'; 
m_model[1] = 'o'; 
m_model[2] = 'n'; 
m_model[3] = 'e'; 
m_model[4] = '\0'; 

} 
Car::Car(float engine_size, int speed) 
{ 
m_speed = speed; 
m_engine_size = engine_size; 
m_model[0] = 'N'; 
m_model[1] = 'o'; 
m_model[2] = 'n'; 
m_model[3] = 'e'; 
m_model[4] = '\0'; 
} 

Car::Display() 
{ 


} 

/

#include <iostream> 
#include <conio.h> 
#include "Car.h" 

using namespace std; 

// DECLARE functions 
void wait_for_keypress(void); 

int main() 
{ 
Car daves_car_1; 
Car daves_car_2(55); 
Car daves_car_3(2.5, 55); 
cout << daves_car_1.m_model << ", " << daves_car_1.m_engine_size << ", " << daves_car_1.getspeed() << endl; 
cout << daves_car_2.m_model << ", " << daves_car_2.m_engine_size << ", " << daves_car_2.getspeed() << endl; 
cout << daves_car_3.m_model << ", " << daves_car_3.m_engine_size << ", " << daves_car_3.getspeed() << endl; 
wait_for_keypress(); 
} 

// DEFINE functions 
void wait_for_keypress(void) 
{ 
cout << "Press any key to continue" << endl; 
_getch(); 
} 
+0

* one属性を表示するメソッドを作成する方法を知っていますか? – Beta

答えて

0

次のようにdisplayメソッドを作成することができます。

私はここでクラスを定義している
#include <string> 

class Car { 

private: 
    int m_speed; 
    int Maxspeed; 
    //... 
public: 
    //... 
    std::string display() const { 
     return "m_speed = " + m_speed + "\nMaxspeed = " + Maxspeed; 
    } 

}; 

を、しかし、あなたはtに定義を入れるべきです彼はいつものように実装ファイル。このdisplayメソッドはすべてstd::stringを返し、関連するフィールド変数はCarのインスタンスに関連付けられています。その後、ちょうどCarプロパティのstd::string表現を表示する

Car _car; 
std::cout << _car.display(); 

を行うことができます。ただし、charタイプへのポインタを混乱させるのを避けるため、char m_model[50]std::string m_modelに変更する必要があります。std::stringは、より簡単な文字列操作のための "管理された" charコンテナを提供します。

また、あなたの質問にstd::cout << car_instance;コードスニペットがあります。実際にはoperator<<にユーザー定義型のオーバーロードが可能です。この場合、(例えば):

std::ostream& operator<<(std::ostream& _os, const Car& _car) { 
    _os << _car.display(); 
    return _os; 
} 

[注ストリーム挿入/抽出演算子は、自由関数であるので、クラス外で定義されなければならない]

これはstd::cout(またはを使用することができ、次いでoperator<<をオーバーロードその他のostream)をクラスCarのインスタンスに追加します。

関連する問題