simple constructeur avec la liste des initialiseur?
-
22-09-2019 - |
Question
Ci-dessous j'ai inclus mon dossier h, et mon problème est que le compilateur n'est pas mon goût simple, constructeur de la classe d'exception de listes de initialiseur. Il est également dit que string is undeclared identifier
, même si je #include <string>
en haut du fichier h. Ne voyez-vous quelque chose que je fais mal? Pour plus d'explications, c'est l'une de mes classes de domaine que je suis intégration dans une application GUI wxWidgets sous Windows.
Merci!
time.h
#pragma once
#include <string>
#include <iostream>
// global constants for use in calculation
const int HOURS_TO_MINUTES = 60;
const int MINUTES_TO_HOURS = 100;
class Time
{
public:
// default Time class constructor
// initializes all vars to default values
Time(void);
// ComputeEndTime computes the new delivery end time
// params - none
// preconditions - vars will be error-free
// postconditions - the correct end time will be returned as an int
// returns an int
int ComputeEndTime();
// GetStartTime is the getter for var startTime
// params - none
// returns an int
int GetStartTime() { return startTime; }
// GetEndTime is the getter for var endTime
// params - none
// returns an int
int GetEndTime() { return endTime; }
// GetTimeDiff is the getter for var timeDifference
// params - none
// returns a double
double GetTimeDiff() { return timeDifference; }
// SetStartTime is the setter for var startTime
// params - an int
// returns void
void SetStartTime(int s) { startTime = s; }
// SetEndTime is the setter for var endTime
// params - an int
// returns void
void SetEndTime(int e) { endTime = e; }
// SetTimeDiff is the setter for var timeDifference
// params - a double
// returns void
void SetTimeDiff(double t) { timeDifference = t; }
// destructor for Time class
~Time(void);
private:
int startTime;
int endTime;
double timeDifference;
};
class HourOutOfRangeException
{
public:
// param constructor
// initializes message to passed paramater
// preconditions - param will be a string
// postconditions - message will be initialized
// params a string
// no return type
HourOutOfRangeException(string pMessage) : message(pMessage) {}
// GetMessage is getter for var message
// params none
// preconditions - none
// postconditions - none
// returns string
string GetMessage() { return message; }
// destructor
~HourOutOfRangeException() {}
private:
string message;
};
class MinuteOutOfRangeException
{
public:
// param constructor
// initializes message to passed paramater
// preconditions - param will be a string
// postconditions - message will be initialized
// params a string
// no return type
MinuteOutOfRangeException(string pMessage) : message(pMessage) {}
// GetMessage is getter for var message
// params none
// preconditions - none
// postconditions - none
// returns string
string GetMessage() { return message; }
// destructor
~MinuteOutOfRangeException() {}
private:
string message;
};
class PercentageOutOfRangeException
{
public:
// param constructor
// initializes message to passed paramater
// preconditions - param will be a string
// postconditions - message will be initialized
// params a string
// no return type
PercentageOutOfRangeException(string pMessage) : message(pMessage) {}
// GetMessage is getter for var message
// params none
// preconditions - none
// postconditions - none
// returns string
string GetMessage() { return message; }
// destructor
~PercentageOutOfRangeException() {}
private:
string message;
};
class StartEndException
{
public:
// param constructor
// initializes message to passed paramater
// preconditions - param will be a string
// postconditions - message will be initialized
// params a string
// no return type
StartEndException(string pMessage) : message(pMessage) {}
// GetMessage is getter for var message
// params none
// preconditions - none
// postconditions - none
// returns string
string GetMessage() { return message; }
// destructor
~StartEndException() {}
private:
string message;
};
La solution
string
est dans l'espace de noms std
, vous devez donc le qualifier: std::string
. La liste des initialiseur n'a rien à voir avec le problème.
Sur une note sans rapport, vous pourriez envisager d'avoir vos classes d'exception dérivent de l'une des exceptions de la bibliothèque standard, comme std::runtime_error
.