强制执行一个规则,即调用函数应该为被调用函数返回的值添加常量

时间:2018-03-01 13:42:52

标签: c++ return-value const-cast

我在头文件中定义了以下函数:

uint32_t get_id(void) const { return m_id; }

我想强制执行一个规则,无论哪个函数调用上面的函数都应该为返回的值添加常量,如:

const uint32_t = const_cast(get_id);

这在C ++中是否可行?

1 个答案:

答案 0 :(得分:1)

不,你不能为uint32_t做到这一点。

您可以做的是定义一个禁止任何修改的类(并将uint32_t包含为私有成员)并返回该类的对象。

这包括使T operator=(const T&)不可调用(私有或=delete),例如, What is The Rule of Three?

您仍然需要一种方法来提取基础uint32_t - 但至少您会避免意外更改返回值 - 如果这是您尝试解决的潜在问题。