1

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!

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;
};
4

1 に答える 1

4

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.

于 2010-03-24T04:09:38.537 に答える