Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;逻辑恒常性和const方法的按值返回_C++_Constants - Fatal编程技术网

C++ C++;逻辑恒常性和const方法的按值返回

C++ C++;逻辑恒常性和const方法的按值返回,c++,constants,C++,Constants,有一个类通过另一个由值返回的连接类对象公开了它的一些功能和数据。 例如,通过begin()和end()方法返回迭代器类的容器类型。它通过值so返回迭代器 iterator begin(); const iterator begin() const; 不起作用,我们需要两个独立的类iterator和const_iterator,但是代码重用的原则被违反了,因为我们需要在这两个类中实现类似的功能 有什么解决办法吗?如何在代码重用和保持恒定性之间找到折衷办法?不。我从来没有见过这样做,除了创建函数和

有一个类通过另一个由值返回的连接类对象公开了它的一些功能和数据。 例如,通过begin()和end()方法返回迭代器类的容器类型。它通过值so返回迭代器

iterator begin();
const iterator begin() const;
不起作用,我们需要两个独立的类iterator和const_iterator,但是代码重用的原则被违反了,因为我们需要在这两个类中实现类似的功能


有什么解决办法吗?如何在代码重用和保持恒定性之间找到折衷办法?

不。我从来没有见过这样做,除了创建函数和类的常量和非常量版本

没有。除了创建函数和类的
const
和非const版本之外,我从未见过其他方法

您的代码只是
T*常量
T常量*
之间混淆的变体。它们不一样,一个不能替代另一个。不,这是一个完全不同的主题。这是关于用户定义类型的逻辑恒常性。您的代码只是
T*const
T*const*
之间混淆的变体。它们不一样,一个不能替代另一个。不,这是一个完全不同的主题。这是关于用户定义类型的逻辑一致性