samedi 23 novembre 2019

Problem with a test while declaring a method in c++

I have a problem with the result of this test, with Forme::prochainId() :

TEST_CASE("Compteur", "[Forme]") {
   // Pour être correct, ce test doit etre le premier sur Forme
   REQUIRE(0 == Forme::prochainId());
   Forme f1;
   REQUIRE(0 == f1.getId());
   REQUIRE(1 ==  Forme::prochainId());  
   // Verification que la valeur n'est pas decrementee accidentellement.
   Forme *p = new Forme;
   REQUIRE(1 == p->getId());
   delete p;
   REQUIRE(2 == Forme::prochainId());   
}

This is the class Form and inside you can take a look at the prochainId() method:

#include "Forme.hpp"

int Forme::id = -1;

Forme::Forme(){

    id = id + 1;
    std::cout<<"COUCOU, je suis le constructeur de la classe Forme"<<std::endl;

}

Forme::Forme(Point p , COULEURS c){

    point = p;
    couleur = c;

}

 Point & Forme::getPoint() {

    return point;

}

COULEURS & Forme::getCouleur(){

    return couleur;
}

void Forme::setCouleur(COULEURS c){

    couleur = c;
}

void Forme::setX(int x){

    point.setX(x);

}

void Forme::setY(int y){

    point.setY(y);

}

int& Forme::prochainId(){
    id = id + 1;
    return id;

}


int& Forme::getId(){

    return id;

}

The erros is as in the picture : enter image description here

How should I declare the prochainId() method so the test can work?

Thank you!

Aucun commentaire:

Enregistrer un commentaire