我有一些实现图算法的代码;特别是,这些片段会导致问题:
class Path{
private:
const Graph* graph;
public:
Path(Graph* graph_) : graph(graph_) {
...
}
(应该使用指向a的常量指针创建Path
对象
图)
class GradientDescent{
private:
const Graph graph;
public:
Path currentPath;
GradientDescent(const Graph& graph_) : graph(graph_), currentPath(Path(&graph_)) {}
(应该创建一个GradientDescent
对象,其中包含const Graph
和非const Path
)
问题是,因为我只想弄清楚如何使用const
,我得到了这个错误:
error: no matching constructor for initialization of 'Path'
GradientDescent(const Graph& graph_) : graph(graph_), currentPath(Path(&graph_)) {}
longest_path.cpp:103:9: note: candidate constructor not viable: 1st argument ('const Graph *') would lose const qualifier
Path(Graph* graph_) : graph(graph_) {
答案 0 :(得分:1)
问题是,您的Path
构造函数需要指向非const
Graph
的指针。
要解决此问题,只需更改构造函数声明:
Path(const Graph* graph_) : graph(graph_) {
...
}