我看到"use of undeclared identifier"错误,有人可以告诉我如何解决它吗?
I'm seeing "use of undeclared identifier" error, can someone tell me how to fix it?
我收到了以下代码的错误消息。我是C++新手,所以我看不出有什么问题。非常感谢。
头文件(VGMap.h(:
#ifndef VGMAP_H
#define VGMAP_H
namespace Game
{
struct AdjListNode{
int data;
AdjListNode *next;
};
struct AdjList{
AdjListNode *head;
};
struct Graph{
int V;
AdjList *arr;
};
class vgmap{
public:
AdjListNode *newAdjListNode(int);
Graph *createGraph(int);
void addEdge(Graph*,int,int);
void printGraph(Graph*);
};
}#endif
VGMap.cpp:
#include "VGMap.h"
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::string;
namespace Game
{
AdjListNode* vgmap::newAdjListNode(int data){
AdjListNode *nptr=new AdjListNode;
nptr->data=data;
nptr->next=NULL;
return nptr;
}
Graph* vgmap::createGraph(int V){
Graph *graph=new Graph;
graph->V=V;
graph->arr=new AdjList[V];
//initialize with NULL (e.g root=NULL)
for(int i=0;i<V;i++){
graph->arr[i].head=NULL;
}
return graph;
}
void vgmap::addEdge(Game::Graph *graph, int src, int dest){
AdjListNode *nptr=newAdjListNode(dest);
nptr->next=graph->arr[src].head;
graph->arr[src].head=nptr;
//connect from dest to src (since undirected)
nptr=newAdjListNode(src);
nptr->next=graph->arr[dest].head;
graph->arr[dest].head=nptr;
}
void vgmap::printGraph(Game::Graph *graph){
for(int i=0;i<graph->V;i++){
AdjListNode *root=graph->arr[i].head;
if(i==4||(i-4)%5==0){
cout<<std::endl;
}
else if(i%5==0){
cout<<i<<" ";
}
while(root!=NULL){
if(root->data==i+1){
cout<<root->data<<" ";
//i=i+1;
}
root=root->next;
}
}
}
}
主.cpp:
#include <iostream>
#include <ctime>
#include "VGMap.h"
using Game::AdjListNode;
using Game::AdjList;
using Game::Graph;
using Game::vgmap;
using std::cout;
using std::cin;
using std::endl;
int main()
{
int totalVertices=30;
Graph *graph;
graph=createGraph(totalVertices);
//connect edge
for(int i=0;i<4;i++){
addEdge(graph,i,i+1);
}
for(int i=5;i<9;i++){
addEdge(graph,i,i+1);
}
for(int i=10;i<14;i++){
addEdge(graph,i,i+1);
}
for(int i=15;i<19;i++){
addEdge(graph,i,i+1);
}
for(int i=20;i<24;i++){
addEdge(graph,i,i+1);
}
for(int i=29;i>25;i--){
addEdge(graph,i,i-1);
}
for(int i=0;i<5;i++){
addEdge(graph,25-i*5,25-(i+1)*5);
}
for(int i=0;i<5;i++){
addEdge(graph,1+i*5,1+(i+1)*5);
}
for(int i=0;i<5;i++){
addEdge(graph,2+i*5,2+(i+1)*5);
}
for(int i=0;i<5;i++){
addEdge(graph,3+i*5,3+(i+1)*5);
}
for(int i=0;i<5;i++){
addEdge(graph,4+i*5,4+(i+1)*5);
}
printGraph(graph);
}
这是我收到的错误消息:
main.cpp:47:11: error: use of undeclared identifier 'createGraph'
graph=createGraph(totalVertices);
^
main.cpp:50:7: error: use of undeclared identifier 'addEdge'
addEdge(graph,i,i+1);
^
main.cpp:53:7: error: use of undeclared identifier 'addEdge'
addEdge(graph,i,i+1);
^
main.cpp:56:7: error: use of undeclared identifier 'addEdge'
addEdge(graph,i,i+1);
^
main.cpp:59:7: error: use of undeclared identifier 'addEdge'
addEdge(graph,i,i+1);
^
main.cpp:62:7: error: use of undeclared identifier 'addEdge'
addEdge(graph,i,i+1);
^
main.cpp:65:7: error: use of undeclared identifier 'addEdge'
addEdge(graph,i,i-1);
^
main.cpp:68:7: error: use of undeclared identifier 'addEdge'
addEdge(graph,25-i*5,25-(i+1)*5);
^
main.cpp:71:7: error: use of undeclared identifier 'addEdge'
addEdge(graph,1+i*5,1+(i+1)*5);
^
main.cpp:74:7: error: use of undeclared identifier 'addEdge'
addEdge(graph,2+i*5,2+(i+1)*5);
^
main.cpp:77:7: error: use of undeclared identifier 'addEdge'
addEdge(graph,3+i*5,3+(i+1)*5);
^
main.cpp:80:7: error: use of undeclared identifier 'addEdge'
addEdge(graph,4+i*5,4+(i+1)*5);
^
main.cpp:82:5: error: use of undeclared identifier 'printGraph'
printGraph(graph);
^
13 errors generated.
没有定义createGraph
或addEdge
的函数。 但是,有一些方法称为vgmap::createGraph
和vgmap::addEdge
.
不过,您不能像这样调用这些方法,因为您需要首先创建一个vgmap
的实例,然后在该对象上调用方法。
由于这些方法不作用于任何内部数据,因此请将其定义更改为static
:
class vgmap{
public:
static AdjListNode *newAdjListNode(int);
static Graph *createGraph(int);
static void addEdge(Graph*,int,int);
static void printGraph(Graph*);
};
然后,您可以使用全名调用它们,而无需创建vgmap
的实例:
graph=vgmap::createGraph(totalVertices);
...
vgmap::addEdge(graph,i,i-1);
...
相关文章:
- 我看到"use of undeclared identifier"错误,有人可以告诉我如何解决它吗?
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- 比特集告诉我的名字是什么?
- 我试图用这段代码找到二叉树的高度,但它一直返回 0,有人可以告诉我为什么吗?
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 我可以让 valgrind 告诉我 _哪个_值未初始化吗?
- 程序告诉我,即使它们明显匹配,参数也不匹配
- 谁能告诉我为什么这段代码没有产生正确的输出?
- 谁能告诉我,程序中的错误是什么?该程序仅用于获取文件扩展名
- 为什么 gcc 告诉我我的模板不是模板?
- 代码以查找数组中的最大数字,但它仅将第一个数字显示为最大数字. 有人请告诉我为什么
- 关于这个在 Linux 上使用 gcc 编译的程序中的 vtable,nm 告诉我什么?
- 告诉我如何填充二维数组
- 我找不到瓦尔格林德告诉我的记忆链接
- 如何将char数组声明为函数参数?或告诉我此代码中还有其他问题?
- 合成错误不知道为什么会发生这种情况,请检查一下并告诉我这是我的编码还是视觉工作室
- 为什么只有一行告诉我操作员=不可行?但是其他人很好
- 有人可以告诉我波纹管代码(C++)穿了什么吗?
- 请有人告诉我,而代码,当运行时,打印1而不是3.5作为解决方案