web-dev-qa-db-fra.com

l'expression précédant les parenthèses d'appel apparent doit avoir un type de fonction (pointeur sur)

J'apprends le modèle C++ sur la communauté vs2015. Voici mon code, je veux définir une classe de modèle et appeler la fonction membre dans la fonction main()

template <typename T>
class Arithmetic {
    T _a;
    T _b;
    Arithmetic() {};
public
    Arithmetic(T a, T b) :_a(a), _b(b) {};
    T max const() { return _a + _b; };
    T minus const() { return _a - _b; };
};

int main() {
    Arithmetic<int> ar(5,6);
    cout << ar.max() << endl;
}

Lorsque je construis ce programme, je reçois une erreur à la dernière ligne. Ça dit: 

L'expression précédant les parenthèses d'appel apparent doit avoir un type de fonction (pointeur sur).

Que devrais-je faire?

3
S.yao

L'erreur indique que vous essayez d'appeler une fonction max () qui n'est pas définie en tant que fonction. Modifiez la parenthèse après le mot clé const après l’identifiant max:

T max const()...

à

T max() const ...
4
srinivirt
  • Ajouter l'inclusion d'en-tête requise et using
  • Ajouter : après public
  • Déplacez const dans la position appropriée
#include <iostream>
using std::cout;
using std::endl;

template <typename T>
class Arithmetic {
    T _a;
    T _b;
    Arithmetic() {};
public:
    Arithmetic(T a, T b) :_a(a), _b(b) {};
    T max() const { return _a + _b; };
    T minus() const { return _a - _b; };
};

int main() {
    Arithmetic<int> ar(5,6);
    cout << ar.max() << endl;
}
0
MikeCAT