带有初始值设定项列表的简单构造函数?

发布于 2024-08-26 11:40:59 字数 4069 浏览 11 评论 0原文

下面我包含了我的 h 文件,我的问题是编译器不喜欢我的简单异常类的构造函数和初始值设定项列表。它还说 string 是未声明的标识符,即使我在 h 文件的顶部有 #include 。你看到我做错了什么吗?为了进一步解释,这是我的域类之一,我正在将其集成到 Windows 上的 wxWidgets GUI 应用程序中。

谢谢!

时间.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;
};

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我偏爱纯白色 2024-09-02 11:40:59

string 位于命名空间 std 中,因此您需要对其进行限定:std::string。初始化列表与该问题无关。

在不相关的注释中,您可能会考虑让异常类派生自标准库异常之一,例如 std::runtime_error

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文