グラフ用のオープン ソース クラス ライブラリを見つけました。プロジェクトに含めたとき、多くのエラーがあり、それらを修正しようとしました。しかし、解決できないコンパイルエラーがあります。
基本クラス:
template <typename K, typename W, typename T>
class _base_graph
{
//...
protected:
std::map<K, T> nod;
std::list<edge> edg;
};
派生クラス:
template <typename K, typename T = void*>
class graph : public _base_graph<K, void*, T>
{
//...
public:
void add_edge(const K& k1, const K& k2);
};
メソッド本体:
template <typename K, typename T>
void graph<K, T>::add_edge(const K& k1, const K& k2)
{
if (nod.find(k1) == nod.end() || nod.find(k2) == nod.end()) // <-- error!!
throw std::string("add_edge: Node does not exist");
// ...
}
しかし、私の gcc コンパイラはエラーを表示します:
エラー: 'nod' はこのスコープで宣言されていません
このオンライン コンパイラで mycode を見つけてテストできます。