2017-04-11 61 views
-4

我有做简单的getter谁赛格返回故障,我不kwow哪里出了问题:消气赛格故障

有一类“游戏”谁containt两名球员和一个托盘:

> #ifndef PARTIE_H 
> #define PARTIE_H 
> 
> #include <string> 
> #include <iostream> 
> 
> class partie { 
>  class joueur * joueur1; 
>  class joueur * joueur2; 
>  class plateau * jeu; 
> 
> public: 
>  partie(); 
>  void initialize(std::string nomj1, std::string nomj2, int tailleplateau); 
>  int info(); 
>  ~partie(); 
> 
> }; 
> 
> #endif // PARTIE_H 

在.cpp:

> #include "partie.h" 
> #include "joueur.h" 
> #include "plateau.h" 
> #include <string> 
> #include <iostream> 
> 
> partie::partie() { 
>  plateau * jeu = new plateau(0); 
>  joueur * joueur1 = new joueur("test", 1); 
>  joueur * joueur2 = new joueur("test2", 2); 
> 
> } 
> 
> void partie::initialize(std::string nomj1, std::string nomj2, int 
> tailleplateau) { 
>  plateau * jeu = new plateau(tailleplateau); 
>  joueur * joueur1 = new joueur(nomj1, 1); 
>  joueur * joueur2 = new joueur(nomj2, 2); } 
> 
> int partie::info() { return joueur1->getIdentifiant(); 
> 
> } 
> 
> 
> partie::~partie() { 
> 
> } 

类球员:

> #ifndef JOUEUR_H 
> #define JOUEUR_H 
> #include <string> 
> #include <iostream> 
> 
> class joueur { 
>  std::string nom; 
>  int identifiant; 
> 
> public: 
>  joueur(); 
>  joueur(std::string name, int num); 
>  std::string getName(); 
>  int getIdentifiant(); }; 
> 
> #endif // JOUEUR_H 

在.cpp

> #include "joueur.h" 
> #include <string> 
> #include <iostream> 
> 
> joueur::joueur() { 
>  this->nom="DEFAULT"; 
>  this->identifiant=0; } 
> 
> joueur::joueur(std::string name, int num) { 
>  this->nom=name; 
>  this->identifiant=num; } 
> 
> int joueur::getIdentifiant() { 
>  return identifiant; } 
> 
> std::string joueur::getName() { 
>  return nom; } 

任何人看到错误?谢谢你的帮助

+0

main.cpp中: 的#include “mainwindow.h” 的#include <的QApplication> 的#include “partie.h” INT主(INT的argc,字符* argv的[]){ 的QApplication一个( argc,argv); // MainWindow w; //w.show(); partie * newgame; newgame-> initialize(“dylan”,“bob”,13); newgame-> info(); return a.exec(); } – rebug

+0

出于某种原因,你在'joueur'中正确做了事,但在'partie'中做错了。 – molbdnilo

回答

1

有很多错误,例如缩进是一个很大的错误。请通过clang格式或astyle运行您的代码,这将更容易审查。

  • 不使用this->当你不需要它时,这不是java。
  • 不要混淆与当地变量和类成员(这是你的错误)
plateau * jeu = new plateau(tailleplateau); 
joueur * joueur1 = new joueur(nomj1, 1); 
joueur * joueur2 = new joueur(nomj2, 2); } 

在这里,您创建一个本地命名JEU变量,jouer1和jouer2,但它看起来像你也在你的班级中宣布这些变量,所以修复很简单:

jeu = new plateau(tailleplateau); 
joueur1 = new joueur(nomj1, 1); 
joueur2 = new joueur(nomj2, 2); 

不要重新声明它们。 :)

一些更多的提示: - C++不是Java,你也不需要通常是新的东西: - 有没有必要添加堆上您joeurs /高原,你可以在栈上安全地将它们声明(即没有指针) - 如果你认为你应该创建它们在堆(指针),不要使用原始指针,使用智能指针(你应该像的unique_ptr)

class Game { 
    Game() : player1(make_unique<Player>()); 
    } 
    private: 
    std::unique_ptr<Player> player1; 
}; 

这应该消除你的记忆问题。现在,如果它继续发生,请发布调试输出或回溯。