Ich habe nur ein einfaches Programm, wo dice.cpp und dice.h durch game.cpp laufen bis jetzt berechnen Sie einfach die Summe von zwei Würfelwürfen.C++ Einfaches Klassenprogramm wird nicht kompiliert. Habe ich die Include-Header durcheinander gebracht? 'Fehler Neudefinition einer Klasse'
Wenn ich versuche, das Programm anscheinend zu starten, ich definiere die Würfelklasse neu, das ist, was mein Fehler mir sagt.
Hier sind meine drei Dateien.
game.cpp
#include "Dice.h"
#include <iostream>
using namespace std;
int main()
{ int sum;
Dice dice1;
Dice dice2;
dice1.roll();
dice2.roll();
sum = dice1.getFace() + dice2.getFace();
cout << sum;
return 0;
}
dice.cpp
#ifndef DICE_H
#define DICE_H
#include "Dice.h"
using namespace std;
// g++ -c Dice.cpp
// default constructor: initializes the face of a new
// Dice object to 1
Dice::Dice()
{
//cout << "Default constructor " << endl;
face = 1; // not redeclaring the data member face
}
// specific constructor: initializes the face of a new
// Dice object to newFace
// Pre-condition: newFace is a valid number
// call setFace function inside Dice(int newFace)
Dice::Dice(int newFace)
{
//cout << "Specific constructor " << endl;
setFace(newFace);
}
// Sets face to the value in otherFace
// Pre-condition: otherFace is valid
void Dice::setFace(int otherFace)
{
assert(otherFace >= 1 && otherFace <= 6);
face = otherFace;
}
// Changes the value of face to a random value between 1 and 6
void Dice::roll()
{
face = rand()%6 +1;
}
// returns the face value of a Dice object
int Dice::getFace() const
{
return face;
}
// displays the face value of a Dice object
void Dice::display() const
{
cout << "This dice has " << face << " on top" << endl;
}
#endif
Dice.h
#include <iostream>
#include <cassert>
#include <cstdlib>
#include <ctime>
// definition of class Dice
class Dice
{
private:
int face; // can only take values between 1 and 6
public:
// default constructor: initializes the face of a new
// Dice object to 1
Dice();
// specific constructor: initializes the face of a new
// Dice object to newFace
// Pre-condition: newFace is a valid number
// call setFace function inside Dice(int newFace)
Dice(int newFace);
// Sets face to the value in otherFace
// Pre-condition: otherFace is valid
void setFace(int otherFace);
// Changes the value of face to a random value between 1 and 6
void roll();
// returns the face value of a Dice object
int getFace() const;
// displays the face value of a Dice object
void display() const;
};
Warum Haben Sie Kopfzeile Wachen in der * source * Datei, aber keine in der eigentlichen Header-Datei? –
'** Klasse Dice **'? Was ist mit der '**'? – Unimportant
Auch, bitte bearbeiten Sie Ihre Frage, um die * tatsächlichen * Fehler, vollständig, unbearbeitet, einschließlich möglicher Informationsnotizen –