相关疑难解决方法(0)

C++模板typedef

我上课了

template<size_t N, size_t M>
class Matrix {
    // ....
};
Run Code Online (Sandbox Code Playgroud)

我想typedef创建一个Vector(列向量),它相当于一个Matrix大小为N和1的东西.这样的东西:

typedef Matrix<N,1> Vector<N>;
Run Code Online (Sandbox Code Playgroud)

这会产生编译错误.以下内容创建了类似的内容,但并不完全符合我的要求:

template <size_t N>
class Vector: public Matrix<N,1>
{ };
Run Code Online (Sandbox Code Playgroud)

是否有解决方案或不太昂贵的解决方法/最佳实践?

c++ templates typedef c++11

356
推荐指数
1
解决办法
16万
查看次数

C++ 11是否具有动态分配数组的包装器,如Boost的scoped_array?

我经常需要在C++中处理动态分配的数组,因此依赖于Boost for scoped_array,shared_array等.在阅读了Stroustrup的C++ 11 FAQC++ 11 Reference Wiki之后,我无法找到C++ 11标准提供的这些动态数组包装器的合适替代品.有什么东西我忽略了,还是我必须继续依赖Boost?

非常感谢您的帮助!

boost memory-management smart-pointers wrapper c++11

28
推荐指数
1
解决办法
1万
查看次数

shared_ptr的不同风格之间的差异

有没有之间的差异boost::shared_ptr,std::tr1::shared_ptr以及即将到来的(中C++0x)std::shared_ptr

从一个移植到另一个有任何开销还是基本相同?

c++ boost tr1 shared-ptr c++11

17
推荐指数
1
解决办法
6027
查看次数

C++ 0x错误:使用std :: shared_ptr将函数重载到const参数是不明确的

假设我有两个不相关的AB.我也有一个Bla使用boost::shared_ptr这样的类:

class Bla {
public:
    void foo(boost::shared_ptr<const A>);
    void foo(boost::shared_ptr<const B>);
}
Run Code Online (Sandbox Code Playgroud)

请注意const.这是这个问题的原始版本所缺乏的重要部分.这个编译,以下代码工作:

Bla bla;
boost::shared_ptr<A> a;
bla.foo(a);
Run Code Online (Sandbox Code Playgroud)

但是,如果我在上面的例子中从使用切换boost::shared_ptr到使用std::shared_ptr,我得到一个编译错误,说:

"error: call of overloaded 'foo(std::shared_ptr<A>)' is ambiguous
note: candidates are: void foo(std::shared_ptr<const A>)
                      void foo(std::shared_ptr<const B>)
Run Code Online (Sandbox Code Playgroud)

你能帮我弄清楚为什么编译器无法弄清楚在std :: shared_ptr情况下使用哪个函数,并且可以在boost :: shared_ptr情况下吗?我正在使用Ubuntu 11.04软件包存储库中的默认GCC和Boost版本,这些版本目前是GCC 4.5.2和Boost 1.42.0.

以下是您可以尝试编译的完整代码:

#include <boost/shared_ptr.hpp>
using boost::shared_ptr;
// #include <memory>
// using std::shared_ptr;

class A {};
class B {};

class Bla {
public: …
Run Code Online (Sandbox Code Playgroud)

c++ boost stl overloading shared-ptr

6
推荐指数
2
解决办法
3309
查看次数

在gcc中启用C++ 0x支持的副作用

以下链接,我想知道在GCC中启用C++ 0x是否存在一些副作用.

根据gcc:"GCC对C++ 0x的支持是实验性的 ".

我担心的是,例如编译器会生成一些不同的代码,或者标准库使用一些在gcc中被破坏的C++ 0x特性.

因此,如果我没有明确使用任何C++ 0x功能,它可能会破坏我现有的代码吗?

gcc c++11

5
推荐指数
1
解决办法
583
查看次数