程序崩溃。找不到问题所在
Program crashed. Could not find what's wrong
#include <iostream>
#include <vector>
using namespace std;
class Book
{
int isbn;
string price;
public:
void setDetails()
{
cout << "ISBN ?" ;
cin >> isbn;
cout << "Price ?";
cin >> price;
}
void getDetails()
{
cout << "ISBN: " << isbn;
cout << "Price: " << price;
}
};
int main()
{
int a;
vector<Book> books;
cout << "How many books to insert ?";
cin >> a;
for(int i = 0; i < a; i++)
{
books[i].setDetails();
}
for(int j = 0; j < a; j++)
{
books[j].getDetails();
}
}
当我运行程序时,在我输入 isbn 值后的那一刻,程序崩溃了。我找不到出了什么问题。我的主要功能有问题吗?
您没有在向量中推送任何元素。您需要使用 push_back
或 resize
推送它们:
int a;
vector<Book> books;
cout << "How many books to insert ?";
cin >> a;
books.resize( a ); // added by jpo38
for(int i = 0; i < a; i++)
{
books[i].setDetails();
}
for(int j = 0; j < a; j++)
{
books[j].getDetails();
}
你的向量是空的。尝试添加以下行:
vector<Book> books;
cout << "How many books to insert ?";
cin >> a;
// Add this line:
books.resize(a);
尝试这样更改它,我试过了它的工作原理,
int a;
cout << "How many books to insert ?";
cin >> a;
vector<Book> books(a);
即先获取大小并用该大小构造向量,这样您就不会遇到分割错误
相关文章:
- Visual Studio 2017 中的 cpprestapi 问题找不到 POST/GET 常量
- C++ "'Shape': cannot instantiate abstract class"找不到问题的根源
- 在抛出 'std::invalid_argument' 的实例后终止调用 what(): stoi (找不到问题所在)
- 我在 c++ 中的 AES 代码有问题。明文正在更改,但加密邮件是相同的。我找不到我的错误
- CMake 的测试:找不到图像(可能的 rpath 问题)
- C++:创建线程时出现问题;错误 C2672:"std::invoke":找不到匹配的重载函数
- 找不到用户定义的 getline。自动扣款有问题?
- 我收到错误"变量类型不完整"无效,我找不到问题所在
- macOS 上的 Qt Creator 出现问题 - ld:找不到 -lQt5Widgets_debug 的库
- glew链接问题找不到__imp_glgetIntegerv
- C Microsoft Visual Studio 2015调试问题(找不到或打开PDB文件.)
- QWT MOC问题(找不到MOC.EXE)
- Caffe 安装问题,远程服务器,ld 找不到 -<package>
- C 汇编问题:找不到对象文件
- DLL 无法加载:0x8007007E找不到模块。不确定导致此依赖项问题的原因
- 打开文件映射问题,找不到文件映射
- C++创建进程 - 系统错误#2找不到文件 - 我的文件路径有什么问题?
- 如何解决在使用CMAKE 3.4.1/VS2015的额外模型编译opencv3.0时找不到包含文件的问题
- 问题创建者:找不到有效的试剂盒
- Linux 上的链接问题(找不到相应库的名称)