gpt4 book ai didi

c++ - 初始化字符矩阵时出现 EAccess 冲突

转载 作者:行者123 更新时间:2023-11-28 02:04:10 24 4
gpt4 key购买 nike

我有一个基本的 C++ 练习。我需要将一些列出的单词传递给 char 矩阵,但我在初始化矩阵时遇到问题...

这是我的代码:

class Cahorcado
{
public:
//functions
Cahorcado(void);
private:
char** palabra;
};
Cahorcado::Cahorcado(void)
{
for(int i=0;i<26;i++)
{
for(int i2=0;i2<255;i2++)
{
palabra[i2][i]=' '; //i'm getting the error over here
}
}
}

我收到“EAccess Violation”错误...我不能使用字符串,必须是 char 的或 AnsiString 的(c++ 生成器)。我不知道我什至是否宣布 char 矩阵是好的。我的想法是这样的:

{'H','e','l','l','o', , 
'W','o','r','l','d', ,
, , , , , ,
, , , , , , }

(只是想出个主意)

http://pastebin.com/gBQvED5h <- 完整代码(西类牙语警告)

最佳答案

在类构造函数的开头,您应该具有以下内容以分配数组存储,

palabra = new char*[rows];
for (std::size_t i = 0; i < rows; ++i)
palabra[i] = new char[cols];

哪里rowscols分别代表二维数组的行数、列数。

然后在你的析构函数中你需要,

for (std::size_t i = 0; i < rows; ++i)
delete[] palabra[i];
delete[] palabra;

为了破坏动态分配的内存,避免内存泄漏。

虽然上面是相当过时的 C++,但更好的方法是通过内部处理内存分配和取消分配的 STL 容器。例如,您可以使用 std::vector<std::vector<char>>对象来存储您的字符矩阵,那么您的类将类似于:

class Cahorcado {
public:
// create char matrix with each element initialised with ' '
Cahorcado(std::size_t rows, std::size_t cols)
: palabra(rows, std::vector<char>(cols,' ')) {}

private:
std::vector<std::vector<char>> palabra;
};

关于c++ - 初始化字符矩阵时出现 EAccess 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38235699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com