小编use*_*601的帖子

const输入与非const输出

我有一个遍历对象树的函数,不会修改树中的任何对象.

该函数看起来像这样:

static Node* findMatchingNode(const Node& root, const SomeFilterData& d);

struct Node {
   Node* left;
   Node* right;
};
Run Code Online (Sandbox Code Playgroud)

该函数可以返回树中的根或任何对象,也可以不返回任何对象.很明显,与给定声明相比,我必须在某处执行const_cast,在大多数情况下这是禁止的.

函数是否可以保证constness并同时允许任何人修改其输出?

编辑.我没有明确说明,我的函数确实没有修改树中的任何节点,也没有创建新的Node,它是纯函数.我想在const那里总是有限定符,告诉每个人该功能不会修改任何东西

编辑.后面的潜在问题是,在函数执行期间(并且仅在函数内部)没有强制输出常量的情况下,没有合法的方式来表达输入的常量.

c++

15
推荐指数
2
解决办法
851
查看次数

标签 统计

c++ ×1