如何返回“只读”向量的副本
我有一个类,它有一个私有属性向量 rectVec; class A { private: vector<Rect> rectVec } 我的问题是如何返回矢量的“只读”副本? 我正在考虑这…
为什么我在转换“float**”时出错到“const float**”?
我有一个接收 float** 作为参数的函数,我尝试将其更改为采用 const float**。 编译器(g++)不喜欢它并发出: invalid conversion from 'float**' to…
复数返回值的常量正确性
结构体 Foo { 字符 * 数据指针; } class ISomeInterface { public: Foo GetFoo( ) const Foo GetFoo( ) } Foo::DataPtr 是指向ISomeInterface 对象内…
从“foo”转换为到“const foo” - C++
我有一个类似的函数(请不要关心通过引用返回临时值。这只是解释问题的示例), const foo<const int>& get_const() { foo<int> f return …
将 boost::Optional 与常量类型一起使用 - C++
我有一个容器类,它使用 boost::Optional 来保存该值。代码如下所示, template<typename T> struct traits { typedef T value_type typedef T&am…
在 C++ 中使用特征
这个问题与我的上一个问题相关。我正在尝试使用 traits 和 traits 解决问题。请考虑以下代码。 template<typename T> struct traits { typedef co…
const 正确性和返回值 - C++
请考虑以下代码。 struct foo { } template<typename T> class test { public: test() {} const T& value() const { return f } private: T f …
通过指向 const 的指针释放内存是一个好习惯吗
有很多问题讨论 C 和 C++ 处理指针常量删除的细节,即 free() 不接受它们以及 delete 和 delete[] 会执行此操作,并且常量性不会阻止对象销毁。 我感…
为什么将“指针到非常量指针”转换为不合法?指向“指向 const 指针的指针”
将非常量指针转换为常量指针是合法的。 那么为什么将指向非 const 的指针转换为指向 const 的指针是不合法的呢? 例如,为什么下面的代码是非法的: c…
如何在模板函数签名中要求 const_iterator 语义?
我正在创建一个构造函数,它将采用一对输入迭代器。我希望方法签名具有类似于以下内容的编译时 const 语义: DataObject::DataObject(const char *beg…
关于 const 成员函数
我遇到了 const 成员函数的两种解释, class A{ public: ... void f() const {} ... } 这意味着它只能访问常量成员; 这意味着它不会修改任何成员; …
这段代码在 C++ 中合法吗?
我刚刚发现,当涉及到模板时,此代码会在 g++ 3.4.2 中编译,并且除非不调用 m() ,否则可以正常工作: template <typename T> class C { T e pub…