Keldon Postado Fevereiro 15, 2008 Denunciar Share Postado Fevereiro 15, 2008 (editado) Dá-me o seguinte erro e não percebo o que está errado: [Linker error] undefined reference to `CD::CD(std::string, double)' CD.H// Declaracoes da classe Artigo de Depósitos à Ordem #ifndef CD_H #define CD_H #include <iostream> using namespace std; #include "Artigo.h" #include "Data.h" class CD : public Artigo { private: string m_editora; double m_lancamento; public: CD(string t="", double l=0.0, string e=""); CD(const CD& c); double obtemDataLancamento() const; string obtemEditora() const; void mostraArtigo() const; void escreveArtigo(ostream& os); void leArtigo(); void leArtigo(istream& is); const string obtemTipo() const; }; #endif[/qode] CD.CPP [code]#include "CD.h" CD::CD(string t, double l, string e) : Artigo(t), m_lancamento (l), m_editora(e) { } CD::CD(const CD& c) : Artigo©, m_lancamento (c.m_lancamento), m_editora(c.m_editora) { } string CD::obtemEditora() const{ return m_editora; } double CD::obtemDataLancamento() const { return m_lancamento; } void CD::mostraArtigo() const { Artigo::mostraArtigo(); cout << "Editora:" << m_editora << endl; cout << "Data de lancamento:" << m_lancamento << endl; } void CD::escreveArtigo(ostream& os) { Artigo::escreveArtigo(os); os << m_editora << endl; os << m_lancamento << endl; } void CD::leArtigo() { Artigo::leArtigo(); cout << "Editora:"; cin >> m_editora; cout << "Data de lancamento:"; cin >> m_lancamento; } void CD::leArtigo(istream& is) { Artigo::leArtigo(is); is >> m_editora; is >> m_lancamento; } const string CD::obtemTipo() const { return "CD"; }Alguém me pode ajudar a descobrir o problema?Obrigado. Editado Fevereiro 16, 2008 por Micheus Adicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Fevereiro 17, 2008 Denunciar Share Postado Fevereiro 17, 2008 Boa noite, Keldon.Embora os construtores CD tenham valores default para seus argumentos, o compilador C++ não está conseguindo interpretar para qual dos argumentos deve ser passado o valor que você determinou.Quando se usa argumentos default, os mais improváveis de se passar devem estar no final da lista, seguindo uma ordem de importância.No seu caso, o parâmetro double de CD::CD é o segundo, provavelmente você o está chamando de maneira semelhante a esta:CD(double_value);O compilador procurará o construtor CD::CD(double), porque no seu construtor o parâmetro double é o segundo e não o primeiro. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Keldon
Dá-me o seguinte erro e não percebo o que está errado: [Linker error] undefined reference to `CD::CD(std::string, double)'
CD.H
Alguém me pode ajudar a descobrir o problema?
Obrigado.
Editado por MicheusAdicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.