C++ 运行时检查失败#2-围绕变量';e';他被腐蚀了。发生 #包括 #包括 使用名称空间std; 类欧拉{ 私人: int-korifes=0; int-akmes=0; int*pinakas[]; 公众: void print(){cout
您的代码中存在大量错误,所有错误都与C++ 运行时检查失败#2-围绕变量';e';他被腐蚀了。发生 #包括 #包括 使用名称空间std; 类欧拉{ 私人: int-korifes=0; int-akmes=0; int*pinakas[]; 公众: void print(){cout,c++,class,visual-studio-2010,C++,Class,Visual Studio 2010,您的代码中存在大量错误,所有错误都与pinakas成员变量的性质有关。目前,您将其声明为指针数组(指向int),而且,您对“flexible”数组使用了非标准语法(空的[]) 我通常不只是粘贴“固定”代码作为答案,但在这种情况下,该代码(在我进行更改的地方添加了\\\\注释)可能是帮助您的最简洁的方式 尽管这里的许多人无疑会指出,最好避免使用“原始”指针和new和delete运算符,而是使用容器 #包括 #包括 //使用名称空间std;///这被许多程序员认为是“不好的做法” 使用std::co
pinakas
成员变量的性质有关。目前,您将其声明为指针数组(指向int
),而且,您对“flexible”数组使用了非标准语法(空的[]
)
我通常不只是粘贴“固定”代码作为答案,但在这种情况下,该代码(在我进行更改的地方添加了\\\\
注释)可能是帮助您的最简洁的方式
尽管这里的许多人无疑会指出,最好避免使用“原始”指针和new
和delete
运算符,而是使用容器
#包括
#包括
//使用名称空间std;///这被许多程序员认为是“不好的做法”
使用std::cout;///只需使用所需STL的方面!
类欧拉{
私人:
int-korifes=0;
int-akmes=0;
int*pinakas;///这将指向整数的“数组”
公众:
作废打印(){
你的代码中是否有一些关于你想要的pinakas是什么以及如何使用它的混淆。你能澄清一下吗:它应该是一个int
数组,还是一个指针数组?有了这个澄清,我就可以(也许)了识别并更正代码中的其他错误。它是一个int和size“korifes”数组…数字89只是一个测试数字,而数字“akmes”在代码的这一点上是i引用的pinakas
没有大小,因此没有分配给它的空间,写入它是未定义的行为(事实上,在结构中使用未指定大小的数组是无效的c++)在“delete[]pinakas”处是否需要[]?因为pinakas不是array@Angel简单的规则是,如果将new
运算符与[]
一起使用(如下所示),则相应的delete
运算符也必须具有[]
(如下所示)。
#include<iostream>
#include <list>
using namespace std;
class Euler {
private:
int korifes = 0;
int akmes = 0;
int* pinakas[];
public:
void print() { cout << *pinakas[0]; return; }
Euler(int korifess, int akmess);
~Euler() { delete[] *pinakas; }
void addAkmes(int kor1, int kor2);
};
Euler::Euler(int korifess, int akmess) : akmes(akmess), korifes(korifess) {
*pinakas = new int(korifes);
*pinakas[0] = 89;
}
int main() {
Euler e(2, 1);
e.print();
}