无法调用基础构造函数 - 获取读取访问权限[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法调用基础构造函数 - 获取读取访问权限[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我正在设置一个程序,它使用'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)
{
}
如果需要更多代码来理解这一点,请问 - 我担心过多粘贴。
任何帮助是极大的赞赏 :)
答案
使用sEndPoints[2] = endPoints[2]
,您可以访问双元素数组的第三个元素。而且只分配该值。
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)
{
}
以上是关于无法调用基础构造函数 - 获取读取访问权限[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Java内构造函数关键字权限修饰符访问控制及面向对象的特性!
无法从从 sql 数据库读取的 javascript 函数中获取返回数组 [重复]
1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用