2010-11-20 93 views
0

我已经实现了以下类图继承

class graph { 
    friend ostream& operator<< (ostream&, graph&); 
public: 
    graph() { } 
    ~graph() { clearMap(); } 

    class node { 
     friend ostream& operator<< (ostream&, const graph::node&); 
    public: 
     node() { } 
     node(const node&); 
     node(luint inID) { ID = inID; } 
     virtual ~node() { neighbors.clear(); } 

     node& operator=(const node&); 
     void addNeighbor(luint); 
     void addNeighbor(const std::vector<luint>&); 

     luint ID; 
     std::vector<luint> neighbors; 
    }; 

    void addNode(const node&); 
    void addNode(const node*); 
    void addNode(luint); 
    void readFile(const char *); 
    void clearMap(); 

    void randGeom(luint, double); 
    void connRandGeom(luint, double); 
    bool isConnected(); 


protected: 
    std::map<luint, node*> nodeMap; 
}; 

,创造一个新的,从图继承

class colorGraph : public graph { 
public: 
    colorGraph() { } 
    ~colorGraph() { } 

    class colorNode : public graph::node { 
    public: 
     colorNode() { } 
     ~colorNode() { } 

     luint color; 
    }; 
}; 

然而,主要有以下程序没有找到合适的功能:

int main() { 
    pColorGraph myGraph; 
    myGraph = new colorGraph(); 
    myGraph->isConnected(); 
    return 0; 
} 

未定义的符号:
“图:: isConnected()”,引用自 :在main.o中LD _main:符号(S)未找到collect2:LD返回1退出 状态

有人可以告诉我,我在做什么错误?

谢谢

+1

你从来没有真正写过'graph :: isConnected()'?的实现。 – EboMike 2010-11-20 01:44:56

回答

0

该函数没有实现!这只是它的标题。

+0

不应该从图中派生吗? – Bob 2010-11-20 01:52:37

+0

我看到了,我没有包含graph.cpp。解决了。 – Bob 2010-11-20 01:55:41

0

包含graph.cpp。已解决

+1

graph.cpp不应该通过'#include'包含,如果这就是你所指的。它应该单独编译,然后在创建可执行文件时与'main.o'链接(例如,在使用GCC编译时:'g ++ graph.o main.o -o main')。参见[“C++中头文件和cpp文件的约定是什么?”](http://stackoverflow.com/questions/540140/what-is-the-conventions-for-headers-and-cpp-files-in- c)并在链接阶段搜索有关该主题的更多信息。 – outis 2010-11-20 03:27:56

0
  1. 什么是代码中的“pColorGraph”?
  2. 你有没有在“类图”中的“isConnected()”的实现?