0
我想要刪除嵌套在數組中另一個類中的類。我得到一個智能感知錯誤,指出:刪除時發生錯誤:表達式必須是指向完整對象類型的指針
「表達式必須是一個指向一個完整的對象類型」
我試圖通過創建一個指向對象和可視化的參考刪除它的另一種方式工作室出錯,並給我一個DLL錯誤,基本上說明調試符號不加載。
以下是代碼片段 -
graphl.cpp
GraphL::~GraphL()
{
NodeData* rmND; // remove NodeData
GraphNode* rmGN; // remove GraphNode
for (int i = 1; i <= size; i++)
{
deleteEdges(adjList[i]->edgeHead);
rmGN = adjList[i];
delete rmGN->data; //////////////// <-- error here
rmGN->edgeHead = nullptr;
delete rmGN;
}
delete[] adjList;
}
graphl.h
class GraphL {
public:
GraphL();
~GraphL();
void buildGraph(istream& infile);
void depthFirstSearch();
//void displayGraph();
private:
struct EdgeNode {
int adjGraphNode;
EdgeNode* nextEdge;
EdgeNode() : adjGraphNode(0), nextEdge(nullptr) {};
};
struct GraphNode {
EdgeNode* edgeHead;
NodeData data;
bool visited;
GraphNode() : edgeHead(nullptr), visited(false) {};
};
static const int MAXNODES = 6;
GraphNode* adjList[MAXNODES]{}; // adjacency list
//void makeEmpty();
int size;
bool insertEdge(int from, int to);
void dfsHelper(int search);
void deleteEdges(EdgeNode* remove);
};
nodedata.h
class NodeData {
friend ostream & operator<<(ostream &, const NodeData &);
public:
NodeData(); // default constructor, data is set to an empty string
~NodeData();
NodeData(const string &); // data is set equal to parameter
NodeData(const NodeData &); // copy constructor
NodeData& operator=(const NodeData &);
// set class data from data file
// returns true if the data is set, false when bad data, i.e., is eof
bool setData(istream&);
bool operator==(const NodeData &) const;
bool operator!=(const NodeData &) const;
bool operator<(const NodeData &) const;
bool operator>(const NodeData &) const;
bool operator<=(const NodeData &) const;
bool operator>=(const NodeData &) const;
private:
string data;
};
如果我試圖rmND = rmGN-> data;刪除rmND; Visual Studio給了我一個wntdll.pdb未加載的錯誤。如何正確刪除該對象?任何幫助表示讚賞!謝謝。
偏離主題,但數組下標從0到N-1,而不是1到N. – chris
0爲NULL。它未被使用,因此沒有任何事情發生在它。對象從1-N插入。 – endanegered
@endanegered - * 0爲NULL。它的未使用,因此沒有發生任何事情* - 我看到太多的程序失敗,因爲他們試圖僞造基於1的陣列。無論是'0'元素是否被偶然使用,或者索引在數組末尾都是一次性的。只需以'0'開始你的數組。 – PaulMcKenzie