我正在建立一个使用'DFS'作为'Search'的子类的程序,并调用其基本构造函数。
程序运行良好,直到我在调用构造函数之后放置的断点为止,在其中收到错误:
抛出异常:读取访问冲突。 _Pnext为0xCCCCCCD0。
我试图仅将代码总结为重要的内容。
在main.cpp中:
DFS search(gridSize, startPoint, endPoints, walls);
在Search.h中:
public:
Search(unsigned int gridSize, unsigned int startPoint, unsigned int endPoints[2], vector<int> walls);
在Search.cpp中:
#include "Search.h"
Search::Search(unsigned int gridSize, unsigned int startPoint, unsigned int endPoints[2], vector<int> walls)
{
sGridSize = gridSize;
sStartPoint = startPoint;
sEndPoints[2] = endPoints[2];
sWalls = walls;
}
在DFS.h中:
#include "Search.h"
#include <vector>
public:
DFS(unsigned int gridSize, unsigned int startPoint, unsigned int endPoints[2], vector<int> walls);
在DFS.cpp中:
#include "DFS.h"
DFS::DFS(unsigned int gridSize, unsigned int startPoint, unsigned int endPoints[2], vector<int> walls) : Search(gridSize, startPoint, endPoints, walls)
{
}
如果需要更多代码来理解这一点,请问-我担心粘贴太多。
非常感谢您的帮助:)
答案 0 :(得分:2)
使用sEndPoints[2] = endPoints[2]
,您可以访问两个元素数组的 third 元素。而且您只分配该值。
C ++解决方案是使用std::array
而不是“旧的” C样式数组。或std::vector
。
如果您不想这样做,那么解决方案是使用构造函数初始化器列表,在其中初始化成员变量,而不是分配给它们。例如
Search::Search(unsigned int gridSize, unsigned int startPoint, unsigned int endPoints[2], vector<int> walls)
: sGridSize(gridSize), sStartPoint(startPoint), sEndPoints(endPoints), sWalls(walls)
{
}