- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个奇怪的问题,有 2 个“指向对象指针的指针”数组(通过查看代码,我做对了吗?)我确实阅读了很多书,试图掌握尽可能多的关于我正在尝试做的事情的知识,但这个错误越来越多,我真的很想知道为什么会这样。
从这一行弹出的错误中我可以看出:
vec_cliente[i] = new Cliente(nombre,apellido,carne,fecha); //this pops the error
是我正在尝试将一个新的 Cliente 放在 vec_cliente[i] (0) 上,但它不存在。
然而……这
vec_solicitudes[i] = new Casa_Profesor(carne, fecha_sol, costo_mant, costo_alquiler, cant_p,salon);
运行良好 o.0
Principal.h 有这个:
#pragma once
#include string>
#include vector>
#include "Cliente.h"
#include "Persona.h"
#include "Casa_Profesor.h"
using namespace std;
class Principal{
private:
Cliente ** vec_cliente;
Casa_Profesor ** vec_solicitudes;
public:
static string info [];
static string miembros [];
Principal(void);
void cargar(void);
void calular_mayor_solicitudes(Cliente* vec_cliente, Casa_Profesor* vec_solicitudes);
void mayor_costo(void);
void ingreso_total(void);
void espacio_mayor_uso(void);
virtual ~Principal(void);
};
Principal.cpp 有这个:
#include "StdAfx.h"
#include "Principal.h"
#include iostream>
#include string>
#include sstream>
#include vector>
#include iterator>
using namespace std;
string Principal::info[] = {"623 25-05-2010 625.00 850.50 190 1"
,"199 24-01-2009 300 900.5 180 1"
,"199 24-01-2010 300.50 900 175 2"
,"201 24-01-2009 300 900.5 180 3"
,"201 24-01-2010 300.50 900 175 3"
,"201 24-01-2009 30 900.5 180 3"
,"201 24-01-2010 300.50 900 175 3"
,"404 24-01-2009 300 900.5 180 3"
,"404 24-01-2010 300.50 900 175 2"
,"404 24-01-2009 30 900.5 180 3"
,"404 24-01-2010 300.50 900 175 2"
,"404 24-01-2009 300 90.5 180 3"
,"505 24-01-2010 300.50 900 175 2"
,"505 24-01-2009 300 900.5 180 3"
,"505 24-01-2010 300.50 900 175 2"
,"505 24-01-2009 300 90.5 180 1"
,"505 24-01-2010 300.50 900 175 1"
,"505 24-01-2009 300 900.5 180 3"
,"505 24-01-2010 1300.50 900 175 2"
,"106 24-01-2009 300 900.5 180 3"
,"106 24-01-2010 300.50 900 175 3"
,"106 24-01-2009 300 900.5 180 3"
,"106 24-01-2010 300.50 900 175 3"};
string Principal::miembros[] = {"Jaime Perez 623 22 12 1998"
,"Maria Perez 199 02 12 1988"
,"Jose Castro 201 3 11 2008"
,"Juan Caceres 404 21 1 2007"
,"Carla Vivas 505 18 09 1990"
,"Daniela Ochoa 106 02 01 2010"};
Principal::Principal(void)
{
}
void Principal::cargar(){
int i = 0, carne = 0, cant_p = 0, salon = 0;
string nombre, apellido, fecha, aux, fecha_sol;
double costo_mant, costo_alquiler;
vec_solicitudes = new Casa_Profesor * [(sizeof(info)/sizeof(string))*sizeof(Casa_Profesor)];
for (i = 0; i < (sizeof(info)/sizeof(string)); i++){
istringstream stream(info[i],ios_base::in);
stream >> aux;
carne = atoi(aux.c_str());
stream >> fecha_sol;
stream >> aux;
costo_mant = atof(aux.c_str());
stream >> aux;
costo_alquiler = atof(aux.c_str());
stream >> aux;
cant_p = atoi(aux.c_str());
stream >> aux;
salon = atoi(aux.c_str());
vec_solicitudes[i] = new Casa_Profesor(carne, fecha_sol, costo_mant, costo_alquiler, cant_p,salon); //THIS runs fine
}
vec_cliente = new Cliente * [(sizeof(miembros)/sizeof(string))*sizeof(Cliente)];
for (i = 0; i < (sizeof(miembros)/sizeof(string)); i++){
istringstream stream(miembros[i],ios_base::in);
stream >> nombre;
stream >> apellido;
stream >> aux;
carne = atoi(aux.c_str());
stream >> fecha;
fecha.append(" ");
stream >> aux;
fecha.append(aux);
fecha.append(" ");
stream >> aux;
fecha.append(aux);
vec_cliente[i] = new Cliente(nombre,apellido,carne,fecha); //THIS trows the exception
}
}
/* Casa_Profesor 和 Cliente 之间的唯一区别是 Cliente 继承自类 Persona,而 Casa_Profesor 没有。 至于为什么这段代码如此奇怪:这是一种编程实践,但请随时指出我在这段代码中犯的任何其他编程错误(特别是关于 sizeof 的东西) 此外,我可以编辑和发布所有类的代码等等,但我想先看看是否有人可以指出我可能犯的一个明显的新手错误......在此先感谢您的帮助 */
最佳答案
我不确定当您不使用任何 vector 而只使用原始指针和数组时为什么会出现“vector 下标超出范围”。我假设您没有告诉我们一些事情!
所以我将对您的代码做一些随机评论:
vec_solicitudes = new Casa_Profesor * [(sizeof(info)/sizeof(string))*sizeof(Casa_Profesor)];
您是否尝试在 vec_solicitudes 中为信息中的每个字符串创建 1 个 Casa_Profesor *?如果是这样,您想要:
vec_solicitudes = new Casa_Profesor * [sizeof(info)/sizeof(string)];
这将为 (sizeof(info)/sizeof(string)) (Casa_Profesor *) 分配足够的内存。
同样:
vec_cliente = new Cliente * [sizeof(miembros)/sizeof(string)];
但是,您的分配太大而不是太小,因此它们不是异常的原因。相反,我建议您查看 Casa_Profesor 和 Cliente 构造函数 - 它们可能是异常的来源。
关于c++ - "vector subscript out of range",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6944813/
目前我使用服务器接收 GCP Pub/Sub 消息,我想执行 Purchase.Subscriptions:acknowledge调用以确认在服务器收到通知时尚未确认的订阅。 这是场景... 用户购
在 SQL Server 中,在“订阅端”,如何知道表是否处于复制/订阅状态? 有什么想法吗? 最佳答案 我不确定这个问题是否有一个简单的答案,并且我认为答案可能会根据复制类型的不同而有所不同。我认为
我正在使用 Angular 5 并使用 subscribe() 订阅了一个 observable方法。我想知道是否只调用unsubscribe()订阅上的方法足以清理所有内容,或者我也应该调用 rem
我似乎无法解决这个问题。下面是我的代码: #include #include #include _Bool are_anagrams (const char *word1, const char *w
当我使用 gcc -Wall 运行程序时,我得到了 warning: array subscript has type ‘char’ 请帮我看看哪里出了问题。警告显示在第 20:7 和 21:7 行。
我有一个来自 BlockCollection 的 Observable,我像队列一样使用它 IObservable GetObservable() { _queue.GetConsum
错误 1:当我尝试从元数据中获取 stringValue 时,在 Swift3 中显示上述错误: let myMetadata: AVMetadataMachineReadableCodeObject
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
我正在将Paypal的订阅整合到我的网络服务中。。我想知道当我收到onApprove回调(Java SDK)时,订阅是否被激活。。这也意味着onApprove回调是否等同于从WebHook接收通知事件
这个问题在这里已经有了答案: Warning: array subscript has type char (3 个答案) 关闭 3 年前。 问题是这个警告在 15 和 18 警告:数组下标的类型为
根据卷积定理,卷积运算在傅里叶域变为逐点乘法——这里我有'fft_x'的形状(批量大小,高度,宽度,in_channels)这是输入数据的fft和类似的形状(高度,宽度,in_channels,out
我正在按照该教程进行操作,我正在运行带有 cygwin 编译器的 WindowsXP 32 位,该教程要求我运行以下代码: #include #include // forward declara
我有一个网站,我想实现付费订阅服务。它是一项简单的服务,只有两种类型的计划。现在,生病只是使用 Paypal 。但是在开始之前我有点迷茫,主要是数据模型。 我现在的主要问题是,我需要为每个订阅保留哪些
我们可以仅依靠subscr_eot来激活/停用帐户吗? 假设我们有以下情形: 在9/16,客户使用Paypal支付每月定期费用 服务。 24小时后, Paypal (Paypal)发送“subscr_
我的应用程序已在我的模拟器上完成,但当我尝试在我的手机上使用时,我遇到了 2 个错误 “下标”的使用不明确 我正在阅读这篇文章,但无法修复它。 How to solve Ambiguous use o
我在尝试使用下标访问范围的第 n 个元素时遇到问题。代码 super 简单: var range = 0.. = 0..)[0] 但是这些都没有解决问题。有没有办法让 Xcode 消除对 subscr
我是 angualr 2 的新手。我正在做一个小的练习应用程序。我有一个用户登录时的身份验证服务。这是它的登录功能。 login(email:string, password:string){
我是 Swift 的初学者,对运算符没有任何高级知识。 我有以下类(class) class Container { var list: [Any] = []; } 我想实现运算符 subscr
我正在尝试从 99 张纸中复制第二行,并将它们一个接一个地添加到第 100 张纸中。 vba 代码如下,但是我不断收到以下错误: 运行时错误'9': 下标超出范围 Sub copyrow()
我正在尝试在 Excel 中的 VBA 中创建一个宏,以将一个工作表的内容复制到另一个工作表(最终将升级为将内容从一个工作簿复制到另一个工作簿,但需要先证明这个概念)但我一直遇到运行时错误'9':“下
我是一名优秀的程序员,十分优秀!