在下面,我包括我的.h文件,我的问题是,编译器不喜欢我的简单的异常类的构造函数与初始化列表。它也说,string is undeclared identifier,即使我在H文件的顶部已经#include <string>。你看到的东西,我做错了什么?为了进一步解释,这是我的域名类,我整合到Windows上的wxWidgets的GUI应用程序之一。

谢谢!

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;
};
有帮助吗?

解决方案

string在命名空间std,所以你需要限定它:std::string。初始化列表无关的问题。

在一个不相关的音符,你可能会考虑让你的异常类标准库的例外之一派生,像std::runtime_error

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top