Below I've included my h file, and my problem is that the compiler is not liking my simple exception class's constructor's with initializer lists. It also is saying that string is undeclared identifier
, even though I have #include <string>
at the top of the h file. Do you see something I am doing wrong? For further explanation, this is one of my domain classes that I'm integrating into a wxWidgets GUI application on Windows.
Thanks!
#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;
};
string
is in namespace std
, so you need to qualify it: std::string
. The initializer list has nothing to do with the problem.
On an unrelated note, you might consider having your exception classes derive from one of the standard library exceptions, like std::runtime_error
.