C ++ - Appeler une fonction dans une classe avec le même nom que la classe
J'étais en train d'écrire une classe en c++, et je suis tombé sur un étrange problème: appelez en dehors des fonctions à l'intérieur d'une classe qui ont le même nom que la classe. C'est un peu déroutant, donc voici un exemple:
void A(char* D) {
printf(D);
}
class A
{
public:
A(int B);
void C();
};
A::A(int B) {
//something here
}
void A::C() {
A("Hello, World.");
}
Le compilateur se plaint à la seconde à la dernière ligne qu'il ne peut pas trouver une fonction(char*), parce qu'il est à l'intérieur de la classe, et le constructeur qui a le même nom que la fonction. Je pourrais écrire une autre fonction à l'extérieur, comme:
ousideA(char* D) {
A(D);
}
Et ensuite appeler outsideA à l'intérieur d'Un::C, mais cela semble être un idiot solution au problème. Quelqu'un sait d'un plus bonne façon de résoudre ce problème?
source d'informationauteur Xymostech | 2009-06-30
Vous devez vous connecter pour publier un commentaire.
devrait fonctionner correctement. Fondamentalement, c'est de dire "utiliser le
A
trouvé dans l'espace de noms global"Utiliser le opérateur de résolution de portée
::
pour accéder au nom de l'étendue globale:Je vous suggère d'utiliser des espaces de noms. Mettez votre classe dans un espace de noms différent de la fonction.
Bien sûr, la vraie question est de savoir pourquoi vous avez une classe et une fonction avec un nom différent? Une bonne règle simple est de faire les classes nommé WithABeginningCapitalLetter et fonctions withoutOne. Ensuite, vous n'aurez jamais ce problème. Bien sûr, la STL ne pas le faire...