【问题标题】:graph inheritance图继承
【发布时间】:2010-11-20 10:01:08
【问题描述】:

我已经实现了以下类

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;
}

未定义的符号:
“graph::isConnected()”,引用 从: main.o ld 中的 _main:未找到符号 collect2:ld 返回 1 退出 状态

谁能告诉我我做错了什么?

谢谢,

【问题讨论】:

  • 你从来没有真正为graph::isConnected()写过实现?!

标签: c++ inheritance linker-errors


【解决方案1】:

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

【讨论】:

  • 不应该从graph导出吗?
  • 我明白了,我没有包含 graph.cpp。解决了。​​
【解决方案2】:

包含graph.cpp。解决了

【讨论】:

  • graph.cpp 不应该通过#include 包含,如果这就是您所指的。它应该单独编译,然后在创建可执行文件时与main.o 链接(例如,使用 GCC 编译时:g++ graph.o main.o -o main)。请参阅"What is the conventions for headers and cpp files in C++?" 并搜索有关链接阶段的信息以获取有关该主题的更多信息。
【解决方案3】:
  1. 您的代码中的“pColorGraph”是什么?
  2. 您是否在“类图”中实现了“isConnected()”?

【讨论】:

    猜你喜欢
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多