Problema em chamar construtor de classe base na herança

10/09/2017

0

C C++

Pessoal, estou pagando estruturas de dados na faculdade em C++ e essa linguagem é muito louca >.<
Estou tentando chamar o construtor da classe mãe no construtor das classes herdeiras, mas aparece o seguinte erro:
error: no matching function for call to ‘Veiculo::Veiculo(std::__cxx11::string&)’



Aí vai o código:
veiculo.h

#ifndef VEICULO_H_
#define VEICULO_H_
#include <iostream>
using namespace std;

class Veiculo {

protected:
	string nome;

public:

	Veiculo(const char *nome) {
		this->nome = string(nome);
		cout << "Criação de Veículo" << nome << endl;
	}

	~Veiculo(){
		cout << "Destruição de Veículo" << nome << endl;
	}

};

class Terrestre : public Veiculo {
public:

	Terrestre() : Veiculo(nome){
		this->nome = Veiculo::nome;
		cout << "Criação de Terrestre" << nome << endl;
	};

	~Terrestre() : Veiculo() {
		cout << "Destruição de Terrestre" << nome << endl;
	}
};

class Aquatico : public Veiculo {
public:

	Aquatico() : Veiculo(nome) {
		this->nome = Veiculo::nome;
		cout << "Criação de Aquatico" << nome << endl;
	};

	~Aquatico() {
		cout << "Destruição de Aquatico" << nome << endl;
	}

};

class Aereo : public Veiculo {
public:

	Aereo() : Veiculo(nome) {
		this->nome = Veiculo::nome;
		cout << "Criação de Aereo" << nome << endl;

	};

	~Aereo() {
		cout << "Destruição de Aereo" << nome << endl;
	}

};


#endif /* VEICULO_H_ */



principal.cpp:
#include <iostream>
#include "veiculo.h"

using namespace std;

int main() {
	cout << "Segunda pratica de AED em C++" << endl;

	Veiculo v1("v1");
	Terrestre t1("t1");
	Aquatico aq1("aq1");
	Aereo ar1("ar1");
}
Igor Alvim

Igor Alvim

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar