我有一个类A
和一个成员函数f
,即返回指向 实例的一些内容设计两个等价成员函数返回一个const和非const指针到构件,分别
int* A::f() {
// common code ...
return &(this->some_container[some_index])
}
现在,我需要模拟功能,只返回一个指针const
, 即
const int* A::f_const() const {
// exactly the same lengthy code ...
return &(this->some_container[some_index]);
}
需要注意的是,随着“冗长的代码”不改变0123实例, 这也使得功能const
w.r.t.该实例(第二个 const
声明)。
我的问题:现在我不知道是否有一些解决方案,以避免代码 加倍,不使用第三个功能。
一方面,呼吁f
内f_const
将是非法的,因为f
不 const
w.r.t.拥有的实例。另一方面,在f
内部调用f_const
将需要将const
指针转换为非const
指针,这也是不可能的。
有没有优雅的声明方法,避免代码翻倍?
如所述,这里使用具有f
和 f_const
共同功能的第三个功能是不是一种选择,因为当施加大量 功能,它将使码的可读性。
可能的重复[如何删除类似的const和非const成员函数之间的代码重复?](http://stackoverflow.com/questions/123758/how-do-i-remove-code-duplication-between -similar-const-and-non-const-member-func) – Rakete1111
你为什么要这样做?人们永远不会想到人们遇到的无穷无尽的C++问题。斯特劳斯特鲁普博士从来没有打算为他的“语言”的“实际笑话”(只问他)作为一个基础来摆弄关于什么机制可能导致某些意想不到的或无用的因素的副作用的哲学论证语义。当然,您可以将数据复制到静态标量并返回其地址,该地址应该保持不变:-) –