Erreur class et methode

Xyliaris -  
ElementW Messages postés 5690 Statut Contributeur -
Bonjour, j'ai un petit soucis dans mon programme utilisant un alliage c/c++. L'erreur est la suivante :

X:\XXX\XXX\XXX\XXX\XXX\XXX\main.cpp|9|error: expected unqualified-id before '.' token|


Voici mes trois fichiers :

main.cpp
#include <iostream>
#include "header.hpp"

using namespace std;

int main()
{
    cout << "Hello world!" << endl;
    cmd.color(0, 5, false);
    cout << "Hello world!" << endl;
    return 0;
}


class.cpp
#include <windows.h>
#include <iostream>
#include "header.hpp"
#include <stdio.h>
#include <stdlib.h>

using namespace std;

void cmd::color(int background, int font, bool withclear)
{
    printf("color %d%d", background, font);
    if( withclear == true)
    {
        printf("cls");
    }
}


header.hpp
#ifndef HEADER_HPP_INCLUDED
#define HEADER_HPP_INCLUDED

class cmd
{
    public:
    void color(int background, int font, bool withclear);
};

#endif


Je ne trouve pas de réponse à cette question et je ne vois pas du tout pourquoi cette erreur ^^", en attendant fortement de l'aide.

Cordialement, Xyxy

2 réponses

  1. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    'lut, pour utiliser
    cmd.color
    il faut que
    cmd
    soit une instance de ta classe
    cmd
    ; aussi en C++ la convention est de nommer les classes avec une majuscule en début de nom (classe a renommer donc), cela donnerait donc:
    int main()
    {
        cout << "Hello world!" << endl;
        Cmd cmd;
        cmd.color(0, 5, false);
        cout << "Hello world!" << endl;
        return 0;
    }
    Ou alternativement, comme la fonction color ne s'exécute pas en fonction de variables appartenant à
    Cmd
    , tu peux marquer
    void color
    comme
    static
    :
    static void color(int background, int font, bool withclear);

    Et t'en servir de manière statique, avec l'opérateur
    ::
    :
    int main()
    {
        cout << "Hello world!" << endl;
        Cmd::color(0, 5, false);
        cout << "Hello world!" << endl;
        return 0;
    }
    0