Question

J'ai une classe définie dans un fichier séparé et à un moment donné, je besoin d'accéder à l'une des fonctions de membres du public d'un autre fichier source. Pour une raison quelconque, j'ai oublié comment faire et compilateur me donne une erreur.

Je classA.h avec la définition de la classe A semblable à ceci:

class classA {
  public:
  int function1(int alpha);
}

Et un classA.cpp de fichier séparé avec la mise en œuvre. Et puis dans un autre fichier blah.cpp j'inclure l'en-tête et essayer d'y accéder comme ceci:

 classA::function1(15);

et mon compilateur, il refuse avec l'erreur qu'il ne pouvait pas trouver une correspondance pour 'CLASSA :: function1 (int).
J'utilise studio Embarcadero RAD 2010 si cette matière.

Était-ce utile?

La solution

Pour appeler une fonction 'normale', vous avez besoin d'une instance.

classA a;
a.function1(15);

Si vous voulez appeler la fonction à l'aide classA:: alors il doit être static.

classA {
  public:
    static int function1(int alpha);
};

//...
classA::function1(15);

Notez que l'intérieur d'une méthode statique, vous ne pouvez pas accéder à toutes les variables membres non-statique, pour la même raison -. Il n'y a pas d'exemple pour fournir un contexte

Autres conseils

est function1 une méthode statique? Si non, vous avez besoin d'un objet de cette classe d'appeler une fonction membre.

Inclure classA.h dans votre blah.cpp et créer un objet de classe A et ensuite appeler la fonction membre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top