Ir para conteúdo
Fórum Script Brasil
  • 0

Problema C++


Keldon

Pergunta

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 por Micheus
Adicionado 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

  • 0

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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...