我目前在代码中遇到未处理的异常,我不明白为什么。这是我第一次使用多个课程。
目前我正在尝试将用户输入放入另一个类的字符串中。我试图将用户输入输入到下面的类
中名为name的字符串中#ifndef SHIP_H
#define SHIP_H
#include "ApplicationMenu.h"
#include <string>
class Ship
{
public:
Ship(void);
~Ship(void);
std::string _size;
std::string _shipName;
std::string name;
};
#endif
进入以下主要
运行的功能#include "ApplicationMenu.h"
#include "Ship.h"
#include <string>
#include <sstream>
class Ship;
#include <iostream>
using namespace std;
ApplicationMenu::ApplicationMenu(void) { userChoice = 0; }
ApplicationMenu::~ApplicationMenu(void) { }
void ApplicationMenu::displayMenu() {
cout << "Welcome to the Port." << endl << "Please select one of the
following options : " << endl
<< "1: Dock Ship" << endl;
cin >> userChoice;
switch (userChoice)
{
case 1:
Ship* ship;
ship->name;
cout << "Please enter the name of your ship your wish to dock: ";
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
getline(cin, ship->name);
cout << ship->name;
break;
}
}
有人可以告诉我为什么会收到错误吗?
编辑:
这个错误是因为一个未初始化的指针,这是由于缺乏对C ++中指针的了解。尽管社区已经回答了这个问题,但这个链接对未来的观众有用。 http://www.cplusplus.com/doc/tutorial/pointers/
答案 0 :(得分:2)
你有一个未初始化的指针Ship* ship;
。您需要使用Ship* ship = new Ship();
或将广告宣布为Ship ship;
答案 1 :(得分:1)
Ship * ship是一个指向随机存储位置的单位指针,然后您尝试访问该位置。您应该始终初始化指向 nullptr 或有效对象的指针,以防止未定义的行为。
Ship* s( new Ship );