我试图在main.h声明一个方法是这样的:传递一个**类作为参数
void buildGraph(int gNum, Graph** gArray);
凡格拉夫是一个类和我想要将指针传递到一个数组指向Graph对象的指针。
我收到错误消息:“图形尚未声明”。 即使我在页面的顶部有#include“graph.h”,并且我一直在使用 图类,所以我知道它的工作原理。
任何想法?
我试图在main.h声明一个方法是这样的:传递一个**类作为参数
void buildGraph(int gNum, Graph** gArray);
凡格拉夫是一个类和我想要将指针传递到一个数组指向Graph对象的指针。
我收到错误消息:“图形尚未声明”。 即使我在页面的顶部有#include“graph.h”,并且我一直在使用 图类,所以我知道它的工作原理。
任何想法?
也许名称Graph是在一个命名空间?那个graph.h文件说什么 - 是顶层的Graph还是在一个名称空间语句中?
我graph.h开始这样 //#包括 “main.h” 的#include
不,在这里你可以在不使用std ::前缀的情况下制作std :: visible的所有内容。亚历克斯意味着你可以这样做:命名空间MyNamespace {class Graph {}; }; – sharptooth 2009-05-15 06:56:52
我通常避免使用“命名空间foo;”因为它可能会让读者或代码的维护者感到困惑,但是,在所有命名空间中,std是可以使用这种方式的意义。 – 2009-05-15 13:31:25
很可能您在文件系统中有多个graph.h文件,并且包含错误的文件。如果是因为机密复制,删除不需要的副本,如果是因为与C++标准库或其他库标题相冲突,则应重新命名头文件以防止将来发生此类冲突。
这种情况的一种常见可能性是Graph.h中的一个不正确的包含警戒,可能是您正在使用的另一个头文件的残留。
也就是说,确保“的#ifndef GRAPH_H”你应该有Graph.h之类的行是真的什么是应该是...
(不过说真的,没有更多的信息回答这个问题很难...)。
该函数声明没有问题。问题应该是别人,你能发布整个代码吗? 你确定Graph不在命名空间中吗? – mentat 2009-05-15 06:39:30