l'appel d'une fonction membre d'une classe différente d'une autre classe
J'ai deux classes A et B. Le contrôle est à l'intérieur de l'une des fonctions membres de la classe A. La fonction de membre calcule un résultat et maintenant, je veux envoyer cette valeur à l'une des fonctions membres de la classe B, j'ai essayé la manière suivante, mais il force de travail
int memberFunctionOfA() { ... //les résultats sont stockés dans certains temporaire de la valeur, disons temp B::memberFunctionOfB(temp); //le chemin j'ai essayé }
La comiler a signalé une erreur. J'ai aussi essayé comme
B obj; obj.memberFunctionOfB(temp);
À la fois m'a donné des erreurs que l'memberFunctionOfB ne peut pas être appelé. Quelqu'un peut me dire ce qui me manque
Modifier
Classe B n'est pas hérité de A. Ils sont tous les deux indépendants. À la fois les fonctions de membre sont publiques et non statique
Parlez-nous de l'erreur exacte que le compilateur.
Je ne comprends pas memberFunctionOfB est fonction statique?
La déclaration de la classe B aiderait beaucoup ici. Si Un hérite de B (ou l'inverse), de catégorie A de la déclaration de l'aide. D'abord deviner, je dirais
Cette erreur signifie que votre classe B n'a pas de constructeur par défaut. SI vous souhaitez créer un B, vous aurez besoin de fournir des arguments -- comme
compilateur dit votre classe B n'a pas de constructeur par défaut qui est nécessaire pour créer un objet sur la pile, comme vous le faites ici:
Je ne comprends pas memberFunctionOfB est fonction statique?
La déclaration de la classe B aiderait beaucoup ici. Si Un hérite de B (ou l'inverse), de catégorie A de la déclaration de l'aide. D'abord deviner, je dirais
memberFunctionOfB
est privé/protégé, mais il est difficile de dire sans voir le code.Cette erreur signifie que votre classe B n'a pas de constructeur par défaut. SI vous souhaitez créer un B, vous aurez besoin de fournir des arguments -- comme
B obj(42, "These are sample args");
plutôt que de simplement B obj;
. Regardez à travers le code de la classe B et de trouver ce que son constructeur attend.compilateur dit votre classe B n'a pas de constructeur par défaut qui est nécessaire pour créer un objet sur la pile, comme vous le faites ici:
B obj;
OriginalL'auteur CHID | 2011-02-13
Vous devez vous connecter pour publier un commentaire.
Votre deuxième tentative:
..., semble parfaitement valable. Nous aurons besoin de la définition de B à aider les autres. B de la définition devrait au minimum avoir, en supposant que la fonction de membre B est non-statique:
Si la fonction de membre B est statique, alors cela devrait fonctionner:
OriginalL'auteur Michael Goldshteyn
Après avoir vu votre commentaire:
Que cela signifie, il n'y a pas de constructeur par défaut pour la classe
B
. Dans votre mise en œuvre, B du constructeur doit être prise paramètre.Donc, soit vous ajoutez un constructeur par défaut de votre classe, ou vous passer de l'argument de votre constructeur lors de la création d'une instance.
OriginalL'auteur Nawaz