gpt4 book ai didi

c++ - 图实现 : variable has initializer but incomplete type

转载 作者:行者123 更新时间:2023-11-28 03:26:18 27 4
gpt4 key购买 nike

我正在尝试学习 C++,并想实现一些用于在图中查找最小生成树的算法。但是,我在编写界面时遇到了一些麻烦,我不知道我哪里出错了。我收到两个错误:

错误:变量 'Graph::adjIterator it' 有初始值设定项但类型不完整

错误:应为“,”或“;”在“=”标记之前

图.h

#ifndef GRAPH_H
#define GRAPH_H

#include<vector>

struct Edge {

int v, w;
double weight;
Edge(int v_, int w_, double weight_ = 1) :
v(v_), w(w_), weight(weight_) {
}
};

class Graph {
private:
int Vcnt, Ecnt;
bool directedGraph;
struct Node {

int v;
Node* next;
Node(int v_, Node* next_) :
v(v_), next(next_) {
}

};
std::vector<Node*> adj; //this is a linked list !

public:
Graph(int V, bool diGraph = false) :
adj(V), Vcnt(V), Ecnt(0), directedGraph(diGraph) {
adj.assign(V, NULL);
}
int V() {
return Vcnt;
}
int E() {
return Ecnt;
}
bool directed() const {
return directedGraph;
}
void insert(Edge e) {
int v = e.v;
int w = e.w;
adj[v] = new Node(w, adj[v]);
if (!directedGraph)
adj[w] = new Node(v, adj[w]);
Ecnt++;
}
bool egde(int v, int w) const;
//void remove(Edge e);
class adjIterator;
friend class adjIterator;
};

图表.cpp

#include "graph.h"

class Graph::adjIterator {
private:
const Graph & G;
int v;
Node* t;
public:
adjIterator(const Graph& G_, int v_) :
G(G_), v(v_) {
t = 0;
}
int begin() {
t = G.adj[v];
return t ? t->v : -1;
}
int nxt() {
if (t)
t = t->next;
return t ? t->v : -1;
}
bool end() {
return t == 0;
}
};

主要.cpp

#include <iostream>
#include "graph.h"

int main() {
Graph G(2);
Edge e(0, 1);
G.insert(e);
for(Graph::adjIterator it(G,0) = it.begin(); it != it.end(); it.nxt()) {
//stuff
}
return 0;
}

预先感谢您的帮助。

最佳答案

您已经在 .cpp 文件中定义了“adjIterator”类,然后尝试从另一个仅在 .h 中看到前向声明的 .cpp 文件中使用它

此外,虽然这不是您的直接问题,但您的 .h 文件中有很多可能属于 .cpp 的内容。

通常,您将所有声明放在 .h 中,将所有实现放在 .cpp 中。

所以 .h 可能有:

class myClass {
public:
myClass();
void someMethod(int argument);
}

然后 .cpp 将具有:

myClass::myClass()
{
//initialise stuff
}

void myClass::someMethod(int argument)
{
//do something clever
}

关于c++ - 图实现 : variable has initializer but incomplete type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13848211/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com