在这个例子中如何使用“const”
How to use `const`ness in this example?
我有一些实现图算法的代码;特别地,有这些片段会导致问题:
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_)) {}
(它应该创建一个具有const Graph
和非const Path
的GradientDescent
对象)
问题是,我只是想弄清楚如何使用const
s,我得到这个错误:
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_) {
问题是你的Path
的构造函数期望一个指向非const
的Graph
的指针。
要解决这个问题,只需修改构造函数声明:
Path(const Graph* graph_) : graph(graph_) {
...
}
相关文章:
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- 在 typedef 内部使用 const 关键字和在 typedef 外部使用 const 关键字之间有区别吗?
- 何时应在构造函数参数中使用 const C++?
- 使用 const char* 键映射 C++ 检索空值
- 使用 const char* 初始化 const ref 字符串成员时幕后会发生什么
- 通过使用 const-cast 的非常量引用来延长临时的寿命
- 在函数中使用运算符重载,在 c++ 中使用 const 类型输入参数
- 无法使用 'const Node *' 类型的右值初始化 'Node *' 类型的变量
- 这里有必要使用const吗
- 在什么情况下,使用'const T*'输入参数比'const T&'更可取?
- 对可变参数模板使用 const 参数
- 为什么我们在这个函数声明中使用 const 和 & ?
- 有什么理由在函数中使用 const 吗?
- 我应该使用 const shared_ptr<T>&or shared_ptr<T> 作为我的 lambda 函数的参数吗?
- 在 C++17 中使用 const std::string& 参数有意义吗?
- 使用 const char* 作为映射/unordered_map的键
- 当我调用 main 中使用 const 对象的 const 函数时,不断出现错误
- 在形式参数列表中自动使用 const 和按引用传递的任何明显后果
- 使用 const T(&x)[N][M] 构造函数类矩阵
- 使用 const double* const 作为模板参数 - 代码性能问题