1. ホーム
  2. c++

[解決済み] タイプはコールオペレータを提供しない

2022-02-03 09:21:14

質問事項

このような関数があります。 order を返します。 vector<Node*>

vector<Node*> order(vector<string> nodes, vector<pair<string, string>> dependencies) {
             Graph graph = buildGraph(nodes, dependencies);
             vector<Node*> order = buildOrder(graph.getNodes());
             return order;
}

と、このように呼んでいます。

vector<Node*> order2 = order(nodes, deps);

しかし、コンパイラはこのようなエラーを出します。

error: type 'std::__1::vector<Node *, std::__1::allocator<Node *> >' does not provide a call operator
        vector<Node*> order2 = order(nodes, deps);
                               ^~~~~
1 error generated.

何が問題になっているのか? 'std::__1::vector<Node *, std::__1::allocator<Node *> >' があることを示唆しているようです。 vector<Node*, <Node*>> とかなんとか言ってますが、これがなかなかわからないんです。

解決方法は?

より完全なコードを投稿していただかないと、ちょっとわかりにくいのですが、次のように考えてみてください。

int order(int j, int k)
{   
    return 3;
}   

int main(int argc, char *argv[])
{   
    char order;

    // order(2, 3);                                                
}

このコードは問題なくビルドできます。しかし、コメントアウトされていない

    // order(2, 3);                     

は失敗します。 main , order は文字であり、関数ではありません。エラーメッセージからすると、何か似たような問題を抱えているように見えますが、どうでしょうか?