samedi 1 février 2020

Problem when I want to display a map in c++ project

I have a problem with my c++ project. I have 3 classes: - ProduitAccepter - PropositonDonVente - Produit

This is my ProduitAccepter.cpp :

#include "produitAccepter.h"
#include <iostream>
#include <map>
#include <iterator>

ProduitAccepter::ProduitAccepter()
{

}

ProduitAccepter::ProduitAccepter(std::map<PropositionDonVente, std::string> produitAcc)
{
    m_produitAcc = produitAcc;
}


ProduitAccepter::~ProduitAccepter()
{

}

int ProduitAccepter::addElementMap(PropositionDonVente proposition, std::string nomGerant)
{
    if (m_produitAcc.insert(std::pair<PropositionDonVente, std::string>(proposition, nomGerant)).second == true) {
        return 1;
    }
    return 0;
}

void ProduitAccepter::afficheElement()
{
    std::map<PropositionDonVente, std::string>::iterator it = m_produitAcc.begin();
    while (it != m_produitAcc.end())
    {
        std::cout << it->first.getIdProposition() << " :: " << it->second << std::endl;
        it++;
    }
}

//Accesseur
int ProduitAccepter::getSizeMap() const
{
    return m_produitAcc.size();
}

This is my ProduitAccepter.h :

#if !defined(__PRODUITACCEPTER__)
#define __PRODUITACCEPTER__

#include <string>
#include <time.h>
#include <map>
#include "produit.h"
#include "propositionDonVente.h"



class ProduitAccepter
{
public:
    ProduitAccepter();
    ProduitAccepter(std::map<PropositionDonVente, std::string> produitAcc);
    ~ProduitAccepter();

    int addElementMap(PropositionDonVente proposition, std::string nomGerant);
    void afficheElement();


    //accesseur
    int getSizeMap() const;

    //mutateur



private:
    std::map<PropositionDonVente, std::string> m_produitAcc;

};


#endif

This is my PropositionDonVente.cpp :

#include "propositionDonVente.h"
#include <iostream>

PropositionDonVente::PropositionDonVente()
{

}

PropositionDonVente::PropositionDonVente(time_t dateReception, std::string type, Produit produit, std::string nameDonateur, std::string tel, std::string addresse, std::string description, int idProposition, time_t dateRetrait) :
    m_dateReception(dateReception), m_type(type), m_produit(produit), m_nameDonateur(nameDonateur), m_tel(tel), m_addresse(addresse), m_description(description),
    m_idProposition(idProposition), m_dateRetrait(dateRetrait)
{
}

PropositionDonVente::~PropositionDonVente()
{

}

//Accesseur
time_t PropositionDonVente::getDateReception() const
{
    return m_dateReception;
}

std::string PropositionDonVente::getType() const
{
    return m_type;
}

Produit PropositionDonVente::getProduit() const
{
    return m_produit;
}

std::string PropositionDonVente::getNameDonateur() const
{
    return m_nameDonateur;
}

std::string PropositionDonVente::getTel() const
{
    return m_tel;
}

std::string PropositionDonVente::getAddresse() const
{
    return m_addresse;
}

std::string PropositionDonVente::getDescription() const
{
    return m_description;
}

int PropositionDonVente::getIdProposition() const
{
    return m_idProposition;
}

time_t PropositionDonVente::getDateRetrait() const
{
    return m_dateRetrait;
}


//Mutateur
void PropositionDonVente::setDateReception(time_t dateReception)
{
    m_dateReception = dateReception;
}

void PropositionDonVente::setType(std::string type) {
    m_type = type;
}

void PropositionDonVente::setProduit(Produit produit) {
    m_produit = produit;
}

void PropositionDonVente::setNameDonateur(std::string tel) {
    m_tel = tel;
}

void PropositionDonVente::setAddresse(std::string addresse) {
    m_addresse = addresse;
}

void PropositionDonVente::setDescription(std::string description) {
    m_description = description;
}

void PropositionDonVente::setIdProposition(int idProposition) {
    m_idProposition = idProposition;
}

void PropositionDonVente::setDateRetrait(time_t dateRetrait) {
    m_dateRetrait = dateRetrait;
}

This is my PropositionDonVente.h :

#if !defined(__PROPOSITIONDONVENTE__)
#define __PROPOSITIONDONVENTE__

#include <string>
#include <time.h>
#include "produit.h"


class PropositionDonVente
{
public:
    PropositionDonVente();
    PropositionDonVente(time_t dateReception, std::string type, Produit produit, std::string nameDonateur, std::string tel, std::string addresse, std::string description, int idProposition, time_t dateRetrait);
    ~PropositionDonVente();


    //accesseur
    time_t getDateReception() const;
    std::string getType() const;
    Produit getProduit() const;
    std::string getNameDonateur() const;
    std::string getTel() const;
    std::string getAddresse() const;
    std::string getDescription() const;
    int getIdProposition() const;
    time_t getDateRetrait() const;

    //mutateur
    void setDateReception(time_t);
    void setType(std::string);
    void setProduit(Produit);
    void setNameDonateur(std::string);
    void setTel(std::string);
    void setAddresse(std::string);
    void setDescription(std::string);
    void setIdProposition(int);
    void setDateRetrait(time_t);


private:
    time_t m_dateReception;
    std::string m_type;
    Produit m_produit;
    std::string m_nameDonateur;
    std::string m_tel;
    std::string m_addresse;
    std::string m_description;
    int m_idProposition;
    time_t m_dateRetrait;

};


#endif

This in my Main :

#include "produit.h"
#include "propositionDonVente.h"
#include "produitAccepter.h"
#include <iostream>
#include <map>

int main()
{
    //Produit(int refProduit, std::string nameProduit, int idProprietaire, bool estAttribuer, bool produitValide, int prix, bool stocker, int idLieuStockageIfStocker, time_t dateDeDepotInStock);
    Produit p1(1, "table", 1, false, false, 50, false, 0, 1 );
    Produit p2(2, "chaise", 1, false, false, 25, false, 0, 1);
    std::cout << p1.getRef() << std::endl;
    std::cout << p1.getNameProduit() << std::endl;

    //PropositionDonVente(time_t dateReception, std::string type, Produit produit, std::string nameDonateur, std::string tel, std::string addresse, std::string description, int idProposition, time_t dateRetrait);
    PropositionDonVente pdv1(1, "table", p1, "moha", "0645789562", "21 avenue les fougère", "bonne etat et passe partout", 1, 1);
    PropositionDonVente pdv2(1, "table", p2, "moha", "0654986325", "17 rue des herbes", "bonne etat et passe partout", 2, 1);

    std::map<PropositionDonVente, std::string> maptest;
    ProduitAccepter pa(maptest);
    pa.addElementMap(pdv1, "alain");
    pa.addElementMap(pdv2, "alain");

    pa.afficheElement();

    std::cout << pa.getSizeMap() << std::endl;


    return 0;
}

In my function void ProduitAccepter::afficheElement() I heve this error (C2678)

'<' binary: no operator found which accepts a left part operand of type 'const _Ty' (or there is no acceptable conversion)

Can you help me please ?

Thank you in advance!

Aucun commentaire:

Enregistrer un commentaire