Ir ao conteúdo

Posts recomendados

Postado

Quem Poderia me ajudar nesta outra?

image.png.6b011097bb5debd22e4c9e81832780f7.png

 

Incluindo as informações de image.png.581eb28c292f2b5922cbd70d0393732b.png

Para que possa compilar a main() abaixo;

 

 

#include <iostream>
#include <vector>
using namespace std;

int main(){
	
	Car BMW(382, 41245);
	Car Ferrari(710, 350000);
	cout<<"BMW: "<<BMW<<endl;
	cout<<"Ferrari: "<<Ferrari<<endl;
	//1-
	cout<<"\n1-\n";
	cout<<"Ferrari-BMW: "<<Ferrari-BMW<<endl;
	cout<<"BMW*Ferrari: "<<BMW*Ferrari<<endl;
	cout<<"Ferrari/BMW: "<<Ferrari/BMW<<endl;
	//2-
	cout<<"\n2-\n";
	BMW+=20;
	cout<<"BMW+=20: "<<BMW<<endl;
	BMW-=20;
	cout<<"BMW-=20: "<<BMW<<endl;
	BMW*=2;
	cout<<"BMW*=2:: "<<BMW<<endl;
	BMW/=2;
	cout<<"BMW/=2:: "<<BMW<<endl;
	//3-
	cout<<"\n3-\n";
	cout<<"++BMW: "<<++BMW<<endl;
	cout<<"--BMW: "<<--BMW<<endl;
	cout<<"BMW++: "<<BMW++<<" BMW later"<<BMW<<endl;
	cout<<"BMW--: "<<BMW--<<" BMW later"<<BMW<<endl;
	//4-
	cout<<"\n4-\n";
	cout<<"BMW==Ferrari?: "<<((BMW==Ferrari()?"TRUE":"FALSE")<<endl;
	cout<<"BMW!=Ferrari?: "<<((BMW!=Ferrari()?"TRUE":"FALSE")<<endl;
	cout<<"BMW<=Ferrari?: "<<((BMW<=Ferrari()?"TRUE":"FALSE")<<endl;
	cout<<"BMW>Ferrari?: "<<((BMW>Ferrari()?"TRUE":"FALSE")<<endl;
	return 0;
	
}

 

  • Obrigado 1
  • Triste 1
Postado
2 horas atrás, PC Trindade disse:

Para que possa compilar a main() abaixo;

 

 

Sei. E vai compilar o que?

 

E onde estão os arquivos da classe? O que fez até agora?

 

Se nem tem o código da classe onde vai redefinir algum operador????

  • Curtir 1
Postado
#include <iostream>
#include <vector>
using namespace std;

class Car {
	
	friend std::ostream &operator<<( std::ostream &, const Car & );
	friend std::istream &operator>>( std::istream &, Car & );

	public:
		Car();			//Custom default constructor
		Car(double Power2, double price2); //Custom constructor
		Car(const Car & obj); //Copy constructor
		~Car();			//Custom destructor

		double getPower ();
		double getPrice ();
		void showinfo() const;

		static unsigned int getNumCars();

		Car &setPower (double pwr);
		Car &setPrice (double pric);

		Car operator+(const Car &obj); 			//+ operator overload
		bool operator< (Car &obj);	//< operator overload

	private:
		double Power;
		double price;
		static unsigned int number_of_cars; // number of mandatory airbags

};

Car operator+(Car const& Power, Car const& Power2);
Car operator-(Car const& Price, Car const& Price2);

Car::Car (){		//Definition of initial values of the constructor
	Power=1000;
	price=500;
	std::cout<< "Created new car"<< std::endl;
	number_of_cars++;		//increase the number of cars
}

Car::Car (double Power2, double price2){
	Power=Power2;
	price=price2;
	std::cout<< "Created new car"<< std::endl;
	number_of_cars++;		//increase the number of cars
}

//Copy constructor
Car::Car(const Car & obj){
	Power=obj.Power;
	price=obj.price;
	std::cout<< "copied Car"<< std::endl;
	number_of_cars++;		//increase the number of cars
}

//Custom destructor
Car::~Car(){
	number_of_cars--;		//decrease the number of cars
	std::cout<< "Custom Destructor:" <<std::endl;
	std::cout<< "Power:"<< getPower()<<std::endl;
	std::cout<< "Price: "<< getPrice() <<std::endl;
	std::cout<< "Total Cars: "<< number_of_cars <<std::endl;
	
}

//methods
double Car::getPower (){
	return Power;
}

double Car::getPrice (){
	return price;
}

		/* *********Minha fução Showinfo() const = Não tá funcionando*********/
		/*********************************************************************/
		
void Car::showinfo() const{
	std::cout<< "Power:"<< Power <<std::endl;
	std::cout<< "Price: "<< this->price <<std::endl;
	std::cout<< "Total Cars: "<< number_of_cars <<std::endl;
}

//methods to enable cascaded call
Car &Car::setPower (double pwr){
	Power=pwr;
	return *this;
}

Car &Car::setPrice (double pric){
	price=pric;
	return *this;
}

// defines initial value of mandatory_airbags
unsigned int Car::number_of_cars = 0;

// defines static member function
unsigned int Car::getNumCars(){
	return number_of_cars;
}

// Operator + overload
Car Car::operator+ (const Car &obj){
	Car temp;
	temp.Power = Power + obj.Power;
	temp.price = price + obj.price;
	return temp;
}

// Operator < overload
bool Car::operator< (Car &obj){

	double FoM1,FoM2;
	FoM1 = Power/price;
	FoM2 = obj.Power/obj.price;

	return ((FoM1<FoM2)?true:false);
}

// non-member function of << overloading
ostream &operator<<( ostream & ost_obj, const Car & obj){				//OK
	ost_obj<< "The power of this car is: "<< obj.Power<<" and it costs: "<<obj.price <<endl;
	return ost_obj;
}
	/* *********Minha fução abaixo no stod(Power e Price)  Não tá funcionando*********/
	/**********************************************************************************/

// non-member function of >> overloading
istream &operator>>( istream & ist_obj, Car & obj){
	string Power;
	getline(ist_obj, Power, ',');
	//obj.Power = stod(Power);

	string Price;
	getline(ist_obj, Price);
	//obj.price = stod(Price);

	return ist_obj;
}

	/* *********Minha main //1- até 4- = Não tá funcionando*********/
	/***************************************************************/

int main(){
	
	Car BMW(382, 41245);
	Car Ferrari(710, 350000);
	cout<<"BMW: "<<BMW <<endl;
	cout<<"Ferrari: "<<Ferrari<<endl;
	//1-
	cout<<"\n1-\n";
	//cout<<"Ferrari-BMW: "<<Ferrari-BMW<<endl;
	//cout<<"BMW*Ferrari: "<<BMW*Ferrari<<endl;
	//cout<<"Ferrari/BMW: "<<Ferrari/BMW<<endl;
	//2-
	cout<<"\n2-\n";
	//BMW+=20;
	cout<<"BMW+=20: "<<BMW<<endl;
	//BMW-=20;
	cout<<"BMW-=20: "<<BMW<<endl;
	//BMW*=2;
	cout<<"BMW*=2:: "<<BMW<<endl;
	//BMW/=2;
	cout<<"BMW/=2:: "<<BMW<<endl;
	//3-
	cout<<"\n3-\n";
	//cout<<"++BMW: "<<++BMW<<endl;
	//cout<<"--BMW: "<<--BMW<<endl;
	//cout<<"BMW++: "<<BMW++<<" BMW later"<<BMW<<endl;
	//cout<<"BMW--: "<<BMW--<<" BMW later"<<BMW<<endl;
	//4-
	cout<<"\n4-\n";
	//cout<<"BMW==Ferrari?: "<<((BMW==Ferrari()?"TRUE":"FALSE")<<endl;
	//cout<<"BMW!=Ferrari?: "<<((BMW!=Ferrari()?"TRUE":"FALSE")<<endl;
	//cout<<"BMW<=Ferrari?: "<<((BMW<=Ferrari()?"TRUE":"FALSE")<<endl;
	//cout<<"BMW>Ferrari?: "<<((BMW>Ferrari()?"TRUE":"FALSE")<<endl;
	//*/
	return 0;
	
}

Poderia me ajudar?
  Pois não estou conseguindo rodar o restante da main.

 

  • Obrigado 1
Postado

Só vi código para os operadores > + << e >> então como os outros iriam funcionar?

 

Vi essas linhas na classe

 

    Car  operator+(const Car& obj);  //+ operator overload
    bool operator<(Car& obj);        //< operator overload

 

E essas fora da classe

 

Car operator+(Car const& Power, Car const& Power2);
Car operator-(Car const& Price, Car const& Price2);

 

Que significam?

 

A segunda não está implementada e a primeira não tem muito sentido porque não se usa assim.

 

// Custom destructor
Car::~Car()
{

 

Não entendi o comentário. Como seria um destructor não custom? 

 

Recomendo muito evitar esse tipo de comentário:

 

    number_of_cars--;  // decrease the number of cars

 

Dá pra imaginar que essa linha diminui number of cars

 

Isso também não entendi:
 

    double getPower();
    double getPrice();
    void   showinfo() const;

 

Se se preocupou em declarar showinfo() como const poruqe não fez o mesmo com getPower(0 e getPrice()?

 

Mais ainda, showinfo não era pra ser o código da redefinição de << ?

 

Esse código não deveria ter uma classe tipo Frota? Não seria muito mais simples? Qual  a ideia de existir number_of_cars?

 

Não seria mais ilustrativo para aprender se cada carro tivesse um nomezinho? Marca/Modelo/Ano? O simples. Só preço e potência?

 

Postado

NewCar deveria estar declarada aí. Assim:

 

    Car NewCar = BMW + Ferrari;
    NewCar = BMW.operator+(Ferrari);

 

Se o objetivo é compilar main.cpp apenas essa seria mais uma razão para não misturar classes com o código de main. Só atrapalha e faz você perder mais tempo.

 

 

 

    static unsigned int
        number_of_cars;  // number of mandatory airbags

 

Que significa o comentário?

 

    Car& setPower(double pwr);
    Car& setPrice(double pric);

 

Porque retornar uma referência à classe? Não basta definir o valor?

// methods to enable cascaded call
Car& Car::setPower(double pwr)
{
    Power = pwr;
    return *this;
}

Car& Car::setPrice(double pric)
{
    price = pric;
    return *this;
}

 

E o que significa o comentário?

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...