Jak wywołać metodę pobrania ciągu znaków?

0

#include "pch.h"
#include <iostream>
#include <cstdlib>
#include <string.h>
#include <conio.h>

using namespace std;




class Samochod                       //ogólna klasa samochód
{

private:
	int Pojemnosc;
	int Paliwo;

public:
	Samochod(int pojemnosc, int paliwo)			
		: Pojemnosc(pojemnosc), Paliwo(paliwo) {}     
	
	void WyswietlStan()							
	{
		printf("zbiornik paliwa wynosi : %d na %d litra \n", Paliwo, Pojemnosc);
	}

	//wspólne metody dla wszystkich rodzajów samochodów
	int PojemnoscBaku()
	{
		return Pojemnosc;
	}

	int IloscPaliwa()
	{
		return Paliwo;
	}

	bool CzyLadowny()
	{
		return false;
	}

};









class SamochodMiejski:public Samochod
{

private:
	string Kolor;    //nowy argument kolor

public:
	SamochodMiejski(int pojemnosc, int paliwo, string kolor) : Samochod(pojemnosc, paliwo) {}    chod

	const char* PobierzKolor()     
	{
		return Kolor.c_str();     
}

	void WyswietlStan()              
	{
		Samochod::WyswietlStan();      
		printf("Kolor %c\n", PobierzKolor());   
	}
};





class Limuzyna :public Samochod // Limuzyna dziedziczy argumenty Samochodu w sposob publiczny
{

private:
	bool Nawigacja;
	bool SkorzanaTapicerka;     
public:
	Limuzyna(int pojemnosc, int paliwo, bool nawigacja, bool skorzanatapicerka) 
		: Samochod(pojemnosc, paliwo), 
		Nawigacja(nawigacja), SkorzanaTapicerka(skorzanatapicerka) {} 
	
		//metody
	bool MaNawigacje ()              
	{
		return Nawigacja;
	}

	bool MaSkorzanaTapicerke ()   
	{
		return SkorzanaTapicerka;
	}

		void WyswietlStan()
	{
		Samochod::WyswietlStan();      
		printf("Tapicerka ze skory %i\n", MaSkorzanaTapicerke());   
		printf("Nawigacja %i\n", MaNawigacje());   
	}

};




class Ciezarowka :public Samochod
{
private:
	int Ladownosc;
	int Zaladowanie;

public:
	Ciezarowka(int pojemnosc, int paliwo, int ladownosc)
		: Samochod(pojemnosc, paliwo),
		Ladownosc(ladownosc), Zaladowanie(0) {}


//metody

	bool ZaladujLadunek(int wagaladunku)    
	{
		if (Zaladowanie + wagaladunku > Ladownosc) return false;
		Zaladowanie = Zaladowanie + wagaladunku; return true;
	}

	int Ladunek()
	{
		return Zaladowanie;
	}

	void Rozladuj()
	{
		Zaladowanie = 0;
	}

	bool CzyLadowny() 
	{
		return true;

	}

	void WyswietlStan()
	{
		Samochod::WyswietlStan();
		printf("Ladownosc: %d \n", Ladownosc);
		printf("Zaladowanie: %d \n", Zaladowanie);
	}

};





int main()
{
	//SamochodMiejski sm(2000, 50, zielony);
	//sm.PobierzKolor();
	//sm.WyswietlStan();

	Ciezarowka c(2000, 200, 500);
	c.ZaladujLadunek(50);
	c.WyswietlStan();
	_getch();
	return 0;
}

Co zmienić, w klasie SamochodMiejski lub w intstrukcji main, by móc za pomocą metody PobierzKolor() zwracać nazwę jakiegoś koloru?
Wartość ma być ustalana parametrem konstruktora, a metoda PobierzKolor() ma zwracać nazwę koloru.
Ostrzeżenie : „printf”: ciąg formatu „%c” wymaga argumentu typu „int”, ale argument 1 ze zmienną liczbą argumentów ma typ „const char *”

Dziękuję z góry za pomoc.

0

%s, nie %c (ponieważ PobierzKolor() zwraca ciąg znaków).

0

A w funkcji main wywołać to później w podobny sposób?

0

Niestety nie rozumiem o co pytasz - co konkretnie chcesz wywołać i co to znaczy w podobny sposób?

0
    //SamochodMiejski sm(2000, 50, zielony);
    //sm.PobierzKolor();
    //sm.WyswietlStan();

Jak poprawnie sformułować tą część w funkcji main?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.