Ir ao conteúdo

Posts recomendados

Postado

Olá Preciso fazer um simulador de loja em c++, sou iniciante e fiquei preso nos seguintes erros:

• Erro    C2011     'Pedidos': redefinição do tipo 'class'     


• Erro    C2027     uso de tipo indefinido 'Pedidos'

   

em main:

Cliente* c1 = new Cliente("Bruno", "105.158.525-13", "[email protected]", "abc", "1234", "Rua Sao Lazaro", 1404, 501, "31035580", "BH");

Publicacao* p1 = new Publicacao("Arte", 19.90, "joao", "Semanal", "21/05/2018");

Pedidos* pedido1 = new Pedidos(p1, c1);

Classe Cliente:

#ifndef CLIENTE_H
#define CLIENTE_H

#include "Endereco.h"
#include <string>
using std::string;
using std::to_string;

class Cliente {
private:

	string nome_;
	string login_;
	string senha_;
	Endereco *endereco_;
	string cpf_;
	string email_;

public:
	Cliente();
	//Cadastra novo cliente
	Cliente(string nome, string cpf, string email, string login, string senha, string rua, int numero, int ap, string cep, string cidade);
	//Retorna dados do cliente
	string dados();
};

#endif
  
  
  #include "Cliente.h"

Cliente::Cliente() {
	endereco_ = NULL;
}

Cliente :: Cliente(string nome, string cpf, string email, string login, string senha, string rua, int numero, int ap, string cep, string cidade) {
	this->nome_ = nome;
	this->login_ = login;
	this->senha_;
	this->cpf_ = cpf;
	this->email_ = email;
	endereco_ = new Endereco(rua,numero,ap,cep,cidade) ;
}

string Cliente :: dados() {
	
	return "NOME = " +
		nome_ +
		" | CPF  = " +
		cpf_ +
		" | Email = " +
		email_ +
		endereco_->DadosEndereco();
}

Classe Publicacoes:

 

#pragma once
#define PUBLICAO_H
#ifdef PUBLICAO_H

#include <string>

using std::string;

class Publicacao {
private:
	string titulo_;
	double preco_;
	string autor_;
	string periodicidade_;
	string data_;
	bool etiquetada_;
	int vendas_;
public:
	Publicacao();
	//Cria nova publicacao
	Publicacao(string titulo,double preco,string autor,string periodiciodade,string data);
	//etiqueta Publicacao
	void etiquetar();
	//Retorna numero de vendas
	int getVendas();
	//vender
	void vender();
};

#endif

  
  #include "Publicacao.h"

Publicacao::Publicacao() {
	preco_ = 0;
	vendas_ = 0;
	etiquetada_ = false;
}

Publicacao::Publicacao(string titulo, double preco, string autor, string periodicidade, string data) {
	titulo_ = titulo;
	preco_ = preco;
	autor_ = autor;
	periodicidade_ = periodicidade;
	data_ = data;
	etiquetada_ = false;
	vendas_ = 0;
}

void Publicacao::etiquetar() {
	etiquetada_ = true;
}

int Publicacao::getVendas() {
	return vendas_;
}

void Publicacao::vender() {
	vendas_++;
}

Classe Pedidos:




#include <string>
#include "Cliente.h"
#include "Publicacao.h"

using std::pair;

class Pedidos {
private:
	pair<int, string> pedido_;
public:
	//Cria novo pedido
	Pedidos(Publicacao *p, Cliente *c);
	//Retorna pedido
	pair<int, string> retornaPedido();
};


#include "Pedidos.h"

Pedidos::Pedidos(Publicacao *p,Cliente *c) {
	pair<int, string>aux(p->getVendas(), c->dados());
	pedido_ = aux;
	p->vender();
}

pair<int, string> Pedidos::retornaPedido() {
	return pedido_;
}


 

Postado

no cabeçalho (header) da classe Pedidos, faça o mesmo que fez na classe Cliente: use #ifndef #define para evitar a inclusão do mesmo cabeçalho mais de uma vez. Talvez resolva o erro de declaração dupla:

#ifndef PEDIDOS_H
#define PEDIDOS_H
#include <string>
#include "Cliente.h"
#include "Publicacao.h"

using std::pair;

class Pedidos {
private:
	pair<int, string> pedido_;
public:
	//Cria novo pedido
	Pedidos(Publicacao *p, Cliente *c);
	//Retorna pedido
	pair<int, string> retornaPedido();
};
#endif

 

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...