Нужна помощь в устранении необработанного исключения в переполнении стека

Я написал эту простую программу в соответствии с указаниями UML, которые мне дали, но мне сложно понять, почему она вызывает исключение при запуске. Сам код компилируется, когда я запускаю его, и если я нажимаю «Продолжить» достаточно много раз, он успешно запускает код до завершения, но я предполагаю, что он не должен делать то, что делает. Программа показывает

«Необработанное исключение в [адрес памяти] в [Project.exe]: исключение Microsoft C ++: символ в расположении памяти [другой адрес памяти]»

Он использует это исключение дважды, если я нажимаю продолжить, но, если файл тестера не вызывает его появления, я не знаю, как его исправить. (Я действительно не знаю, что исключение е тоже);

#include <string>
#include <iostream>

using namespace std;

class dayType
{
private:
string day;

public:
dayType();
string addDays(int _num);
dayType(string _day);
string getDay();
void setDay(string _day);
string nextDay();
string prevDay();
void print();
};

Functions.cpp

#include <string>
#include <iostream>
#include <exception>

#include "dayType.h"
using namespace std;

string arr_day[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

dayType::dayType()
{
day = "--";
}
string dayType::addDays(int _num)
{
int num = distance(arr_day, find(arr_day, arr_day + 7, day));
num = num + _num;
try
{
while (num > 7)
num -= 7;
return arr_day[num];
}
catch(...)
{
cout << "Negative input value. Compiler did not follow simple instructions...";
}
return "Poopsy";
}
dayType::dayType(string _day)
{
day = "--";
setDay(_day);
}
string dayType::getDay()
{
const string day1 = dayType::day;
return day1;
}
void dayType::setDay(string _day)
{
dayType::day = _day;
if ((day != "Sunday") || (day != "Monday") || (day != "Tuesday") || (day != "Wednesday") || (day != "Thursday") || (day != "Friday") || (day != "Saturday"))
throw "Not a valid day of the week. Seriously... There's only 7";
}
string dayType::nextDay()
{
int num = distance(arr_day, find(arr_day, arr_day + 7, day));
num++;
return arr_day[num];
}
string dayType::prevDay()
{
int num = distance(arr_day, find(arr_day, arr_day + 7, day));
num--;
return arr_day[num];
}
void dayType::print()
{
cout << day << endl;
}

Файл тестера предоставлен:

//*******************************************************
//
// Chapter 1: Programming Exercise 3
//*******************************************************

#include <iostream>
#include <string>

#include "dayType.h";

using namespace std;

int main()
{
dayType myDay("Monday");
cout << "myDay Details: " ;
myDay.print();
cout << endl;

cout << "myDay=" << myDay.getDay()<< ", prevDay=" <<  myDay.prevDay() << endl;

cout << "myDay=" << myDay.getDay()<< ", nextDay=" <<myDay.nextDay() << endl;cout << "myDay after adding 8 : " << myDay.addDays(8) << endl;

try
{
myDay.setDay("ZZZZ");
}
catch(exception e)
{
cout << e.what() << endl;
}

system("pause");
return 0;
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]