c++ - 将数据写入数组时写访问冲突

标签 c++ arrays struct

我试图在构造函数中访问 SDL_Rect* 数组,但每次我这样做时都会遇到 Write access violation。我尝试了多种解决方案,但没有一个对我有用。

我目前拥有的:我制作了一个struct数组:SDL_Rect* rects[50]

然后我尝试使用

访问数据
this->rects[index]->x = x;

这会导致写访问冲突。

我还尝试删除数组 (SDL_Rect* rects) 并使用访问数据

rects->y = y;

但这也导致了写访问冲突。

一个数组会很棒,但是每次我尝试我都会得到前面提到的异常,这是无法实现的吗?


rect.cpp:

namespace SDLGamecore {
namespace graphics {

    Rects::Rects(int x, int y, int w, int h)
    {
        rects->x = x; //Exception thrown: write access violation.
        rects->y = y;
        rects->w = w;
        rects->h = h;
        rectsSize += 1; //this works...
    }

    Rects::~Rects()
    {
        delete[] rects;
    }

    SDL_Rect* Rects::getRects()
    {
        return rects;
    }

    int Rects::getRectsSize()
    {
        return rectsSize;
    }

}}

rects.h:

namespace SDLGamecore { namespace graphics {
    class Rects
    {
    private:
        //SDL_Rect rects[50];
        SDL_Rect* rects;
        int rectsSize = 0;
    public:
        Rects(int x, int y, int w, int h);
        ~Rects();
    public:
        SDL_Rect* getRects();
        int getRectsSize();
    };
}}

typedef struct SDL_Rect
{
    int x, y;
    int w, h;
} SDL_Rect;

最佳答案

你忘了分配 rects ,这只是一个指针,在构造函数中:

rects = new SDL_Rect[50];

也就是说,我不会使用数组/指针,而是使用 std::vector<SDL_Rect> .

关于c++ - 将数据写入数组时写访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38094166/

相关文章:

mysql - 使用 Node 和 Handlebars 动态填充下拉列表的问题

vector - 如何检查结构的集合是否在字段中具有重复的值?

C:将数据值读入结构

go - GO 结构定义中的字符串文字

c++ - 使用OpenCV和C++将模板图像与蒙版匹配

c++ - 在 Effective C++ 中被仿函数语法抛出

c++ - 进度条功能不循环

c++ - QtCreator : Target debug/. ..obj 不存在

c - 包含字符串的数组

java - 尝试将文本文件读入二维数组并打印到屏幕