我有一个遍历对象树的函数,不会修改树中的任何对象.
该函数看起来像这样:
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++ ×1