我正在使用Lemon Graph Library,我想在不复制或分配的情况下将项目添加到柠檬地图。这是代码:
#include <iostream>
#include <lemon/list_graph.h>
#include <lemon/maps.h>
using namespace lemon;
using namespace std;
typedef lemon::ListDigraph LGraph;
typedef lemon::ListDigraph::Arc LArc;
typedef lemon::ListDigraph::Node LNode;
class MyNode {
public:
CrossRefMap<LGraph, LArc, std::string> inputs;
MyNode(const LGraph& graph) : inputs(graph) { }
};
int main(){
LGraph graph;
LGraph::NodeMap<MyNode> nodes(graph);
LNode n = graph.addNode();
nodes[n] = MyNode(graph); // error: object of type 'MyNode' cannot be assigned because its copy assignment operator is implicitly deleted
return 0;
}
这里的主要问题是 CrossRefMap 需要在构造函数中初始化并且没有复制构造函数或赋值运算符。我可以改用指向这个结构的指针,但是这个解决方案并不让我满意。我怎么解决这个问题?任何建议将不胜感激。;)