c++ - 将指针声明为类成员 C++

标签 c++ pointers visual-c++

我正在尝试编写一个 C++ 类,其中包含几个指向 int 的指针作为私有(private)成员。 尝试为指针地址赋值时出现此异常:

Unhandled exception at 0x000B140A in test.exe: 0xC0000005: Access violation      writing location 0x00000000.

这是在我的机器上重现问题的最少代码量

#include "stdafx.h"

class Chunker {
  public:
    Chunker(int cx, int cy);

  private:
    int chunkSizeX, chunkSizeY;
    int *yOff, *xOff;
  };

Chunker::Chunker(int cx, int cy){
  chunkSizeX = cx;
  chunkSizeY = cy;
  *xOff = 0;
  *yOff = 0;
}; 

int main(int argc, char *argv)
{
  Chunker chunker(12, 12);
  return 0;
}

我只是想不通这里出了什么问题?

最佳答案

你需要在某处为你的指针声明内存

Chunker::Chunker(int cx, int cy)
  :  chunkSizeX{cx}, 
     chunkSizeY{cy}
{
    xOff = new int(0);
    yOff = new int(0);
}

否则,您正在为还没有地址的指针赋值。

显然,如果您的类是分配内存的类,那么您也需要清理它

Chunker::~Chunker()
{
    delete xOff;
    delete yOff;
}

如果您的类是分配内存的类,您可能还需要考虑让成员成为

std::unique_ptr<int> xOff;
std::unique_ptr<int> yOff;

关于c++ - 将指针声明为类成员 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28458652/

相关文章:

c - 当作为参数传递时,更新函数中的指针地址。 [在 C 中传递指针作为引用]

C:从函数返回指针数组的元素

c# - C++ 中的数组<T ^> ^T 是什么?如何从数组中提取值?

c++ - 用于 C++ 的快速、庞大且可扩展的几何库

c - 将数组传递给函数时的双指针间接

c++ - Netbeans 7.1.2 中的 C++ 分析器在哪里

c++ - Visual C++ 'Force Includes' 选项

c++ - 一个简单的坦克 C++ 游戏

c++ - 在 int 到 char 的转换过程中,int 太大而无法存储在 char 中,如果 int 太大,将存储在 char 中的值是多少?

c++ - 我应该使用公共(public)变量还是私有(private)变量?