2009-11-27 8 views
-3

que je vois dans un avis de classe d'un ami ceci:C++ base de question

void show_results(Book& foreign_books) { 
     int total_books 

     total_books = foreign_books.getBooksNumber(); 
     cout << total_books << endl; 
    } 

c'est une bonne définition de la classe?

class Book{ 
     public: 
     Book(); 

     int getBooksNumber(); 
    }; 

ps: j'ai écrit ce depuis un téléphone mobile, et je ne peux pas vérifier la documentation trop (je suis novice aussi). J'ai besoin de votre confirmation. ty

Répondre

4

Il est vraiment difficile de dire ce que vous demandez. Permettez-moi d'offrir quelques critiques, cependant. Peut-être que cela aidera.

La méthode show_results doit être const-correct. Cela signifie que vous devez passer foreign_books comme const:

const Book& foreign_books 

De cette façon, votre compilateur se plaindra si vous essayez de modifier foreign_books du tout dans votre méthode. Comme le signale mgb, votre classe Books ne fonctionnera pas car la méthode show_results nécessite un livre, pas un livre. Mais une fois que vous résoudre ce problème, vous voulez probablement faire la const correcte getBooksNumber ainsi:

int getBooksNumber() const; 

Vous ne nous avez pas dit ce que vous essayez d'accomplir ici, donc il est vraiment difficile de dire si vous êtes à proximité pour corriger ce que vous faites.

Enfin, vous avez manqué un point-virgule dans votre méthode show_results:

void show_results(Book& foreign_books) { 
    int total_books; // **here** 

    total_books = foreign_books.getBooksNumber(); 
    cout << total_books << endl; 
} 
+0

comment doit être la classe afin d'avoir const Book & foreign_books? –

+0

Je ne suis pas sûr de ce que vous demandez. void show_results (const Livre et foreign_books) const; peut être ce que vous cherchez. – ChrisInEdmonton

1

Sauf que les livres et livre n'est pas le même (typ0)

Et vous devez avoir un membre de données dans Livres pour enregistrer le numéro, et d'une certaine façon de le générer.
Vous avez probablement aussi besoin d'une sorte d'usine pour créer un numéro unique pour chaque livre()

+0

votre droit, ty. résolu maintenant –

0

Je ne sais pas si vous essayez d'associer un numéro unique à chaque livre ou tout simplement si vous garder une trace du nombre total du livre objets construits jusqu'ici. Si ancien est le cas, vous devez déclarer une variable membre en indiquant bookNumber dans la classe Book, et dans getBooksNumber() vous devez retourner la valeur affectée à la variable bookNumber. Mieux si vous faites getBooksNumber() comme fonction constante et si vous appelez cette fonction avec un objet constant. Si plus tard vous faites le suivi du nombre total d'objets Book construits jusqu'à présent, alors vous devriez avoir un membre de données statiques pour le garder en mémoire et vous pouvez aussi rendre getBooksNumber() statique, et invoque getBooksNumber() sans l'objet de l'appel.

+0

Pourquoi avez-vous bosse une question de 5 ans avec 3 downvotes? :( – Julian