Frage

Im Folgenden werde ich meine h-Datei enthalten habe, und mein Problem ist, dass der Compiler ist meine einfache Ausnahmeklasse Konstruktor nicht zu mögen ist mit initializer Listen. Es sagt auch, dass string is undeclared identifier, obwohl ich an der Spitze der h-Datei #include <string> haben. Siehst du, was ich falsch mache? Zur weiteren Erläuterung ist dies eine meiner Domain-Klassen, dass ich in eine wxWidgets GUI-Anwendung unter Windows bin zu integrieren.

Danke!

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;
};
War es hilfreich?

Lösung

string ist im Namensraum std, so dass Sie es qualifizieren müssen: std::string. Die Initialisiererliste hat nichts mit dem Problem zu tun.

Auf einer nicht verwandte Notiz, könnten Sie betrachten Ihre Ausnahmeklassen von einem der Standardbibliothek Ausnahmen herleiten, die, wie std::runtime_error.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top