C++ const-cast 一个引用
C++ const-cast a reference
这是正确的吗?它使用我的编译器编译,但我被告知它不能使用 AIX 编译器。
typedef std::vector<Entry>::iterator Iterator;
typedef std::vector<Entry>::const_iterator ConstIterator;
bool funct(ConstIterator& iter) const;
inline bool funct(Iterator& iter){return funct(const_cast<ConstIterator&>(iter));}
我应该怎么做才能让我的代码在 AIX 平台上编译?(除了使用 Ctrl-C Ctrl-V 重新实现非常量版本)。
const_cast
用于删除变量的常量。也就是说,如果你有const A& a
你可以写A& b = const_cast<A&>(a)
.现在,您将能够修改b
或对其调用非 const 方法。
在这种情况下,您可以从常规iterator
构造const_iterator
,即使不使用const_cast
,这也始终是可能的。请记住,这是两种不同的类型,只是const_iterator
碰巧可以从iterator
C++常量构造,在这种情况下没有太大关系。
iterator
和const_iterator
(通常)是不同的类型,因此您无法强制转换引用。但是,iterator
可以转换为const_iterator
,所以你可以这样做
return funct(static_cast<ConstIterator>(iter));
或者,更安全,因为它只允许显式转换:
ConstIterator citer = iter;
return funct(citer);
相关文章:
- 返回一个引用C++中另一个类对象的对象的有效方法
- 返回一个C++引用变量 VS 返回一个变量
- 有没有办法重写一个返回指向 istringstream 的指针的函数,而不是返回一个引用?
- 如何使用只有一个引用参数的可变长度参数列表
- 为什么重载 ostream 的运算符<<需要一个引用"&"?
- C++ const-cast 一个引用
- 嵌套绑定到成员,需要一个指针,得到了一个引用.做什么
- r-Rcpp可以公开一个引用同一类的C++类方法
- 有没有办法获取对 MFC 对话框中所有子窗口或控件的引用,因为我有一个引用该控件的 CWnd 对象
- C++一个引用的多个转发:首先复制,然后移动
- 在C++中,我是否可以声明一个引用,以表明没有任何内容会修改它
- 将一个对象传递给一个引用函数,即面试测试
- 需要解释才能理解一个引用的例子
- 一个好的C++编译器会优化一个引用吗
- 我有一个引用,想调用一个需要 boost::shared_ptr 的函数
- 在C++中有一个引用成员有什么问题?
- *return如何隐式返回一个引用
- 为什么我得到一个未对齐指针的警告,而不是一个引用
- 是否可以在不同位置为一个引用分配不同的值
- 编写一个引用类型的函数,用作l值来处理它的r值