2017-04-25 1 views
-6
World::World() { 
    int width = -1; 
    int height = -1; 

    cout << "Aby rozpoczac gre wpisz rozmiar planszy" << endl; 
    cout << "Aby uruchomic domyslne romiary zostaw pole puste" << endl; 

    cout << "Podaj szerokosc: "; 
    // I don't see what i'm typing and i need to press enter twice; 
    cin >> width; 

    cout << "Podaj wysokosc: "; 
    // I don't see what i'm typing too and make my program crash 
    cin >> height; 

    World(height, width); 
} 

les couts fonctionnent très bien mais cin est tellement bugé. Pendant le premier cin je ne vois pas ce que je tape et j'ai besoin d'appuyer deux fois sur Entrée; Alors que secend cin Je ne vois pas quelque chose de trop et pendant que j'appuie sur une touche, plantage du programmeC++ <iostream> cin ne fonctionnent pas correctement

+0

Le code que vous nous montrer devrions travailler. Votre problème est ailleurs. –

+1

Que pensez-vous du monde (hauteur, largeur); –

+1

Mon conseil est d'apprendre à utiliser un débogueur. Et ne vous précipitez pas pour penser que vous avez trouvé un type de compilateur ou un bug système. – drescherjm

Répondre

1

La ligne

World(height, width); 

construit un objet temporaire et défausse. La variable membre de l'objet en cours ne s'initialise jamais correctement.

Simplifiez votre code. Déplacez le code pour obtenir les données d'entrée à la fonction qui l'appelle. Par exemple, utilisez-le dans main.

int width = -1; 
int height = -1; 

cout << "Aby rozpoczac gre wpisz rozmiar planszy" << endl; 
cout << "Aby uruchomic domyslne romiary zostaw pole puste" << endl; 

cout << "Podaj szerokosc: "; 
// I don't see what i'm typing and i need to press enter twice; 
cin >> width; 

cout << "Podaj wysokosc: "; 
// I don't see what i'm typing too and make my program crash 
cin >> height; 

World w(height, width); 

Simplifiez la construtor par défaut (remplacer heightMember et widthMember avec les variables réelles membres):

World::World() : heightMember(0), widthMember(0) {}