noncopyable相关内容
可能重复: 我可以列出初始化一个只移动类型的向量吗? 我使用 gcc 4.6.1 编译这段代码 int main(){std::vector>向量({std::unique_ptr(new int(0)),std::unique_ptr(new int(1)),});返回0;} 在 g++ 的抱怨中,有类似的东西 /usr/lib/gcc/x86_64-unknown-linux-g
..
我需要一个既不能复制也不能移动的元素容器.这些元素不是默认可构造的,但它们的构造函数得到相同的参数. 容器的大小在其生命周期内不会改变.它应该像内置数组一样简单,但它的大小是在运行时调用构造函数时确定的. 有没有一种简单的方法来实现它,而无需使用 std::vector> 产生的内存分配和间接开销? 解决方案 这是一个简单但不完整的解决方案,假设每个元素都是用相同的参数构造的.
..
我希望我的班级拥有一个 v8::Context 和一个 v8::External 作为成员.因此,我认为我必须使用持久句柄. class ScriptHelper {上市:ScriptHelper(v8::Persistent 上下文) : 上下文(上下文) {//...}//...私人的:v8::Persistent语境;v8::Persis
..
为了防止复制一个类,你可以很容易地声明一个私有的复制构造函数/赋值运算符.但是你也可以继承boost::noncopyable. 在这种情况下使用 boost 的优点/缺点是什么? 解决方案 总结别人的看法: boost::noncopyable 相对于私有复制方法的优势: 它的意图更加明确和描述性.使用私有复制函数是一种比 noncopyable 需要更长的时间才能发现
..
在C ++ 11之前,我看到了这样的代码: class Car { public: Car(){} 私人: Car(const Car&); 汽车&运算符=(const Car&); }; 对于C ++ 11(及更高版本),我看到这样的代码: 班级汽车{ public: Car(){} private: Car(const Car&)=删除;
..
使用C ++ 11中明确删除的成员函数,仍然值得从不可复制的基类继承吗? 我在说的是,私有地继承具有私有或已删除副本构造函数和副本分配的基类(例如 boost :: noncopyable )。 此问题仍然适用于C ++ 11吗? 我不明白为什么有人认为使类在C ++ 11中不可复制更容易。 在C ++ 03中: 私有: MyClass(const MyClass&
..
我需要一个既不可复制也不可移动的元素容器。这些元素不是默认可构造的,但是它们的构造函数具有相同的参数。 容器的寿命不会改变。它应该像内置数组一样简单,但是它的大小是在运行时调用构造函数时确定的。 有没有一种简单的方法可以实现这一点,而不会导致使用 std :: vector> ? 解决方案 在每个元素都假定
..
如果基础类型T是不可默认构造的,不可复制/可移动的,但实例仍然可以存在,该怎么做初始化boost::optional? 出于任何语义原因而禁止boost::optional具有某些成员函数(如template boost::optional::construct(Args && ...args)),该成员函数将所有参数传递到就地op
..
我正在编写一个程序,该程序读取大文件(3x280 GB),并对文件中的数据进行拟合.并行化这样的程序非常方便,而使用OpenMP可以很容易地做到这一点. 我不了解的是OpenMP中如何获取私有变量.众所周知,fstream的对象是不可复制的,并且很直观,这使我无法将其用作私有对象.因此,文件的读者是共享的. 后来我遇到了一些问题,我想到尝试将fstreams设为私有,...猜怎么着?有
..
#include #include #include #include #include struct T { T()= default; T(T const&)= delete; T& op
..
我知道以下代码不会编译,因为A的move构造函数被删除,因为互斥不可移动。 class A { public: A(int i){} private: std :: mutex m; }; int main(){ std :: vector v; v.emplace_back(2); } 但如果我想要 A 要存储在std容器
..
假设我有: 不可复制的A类 B类作为成员,const A& a 一个函数 A GenerateA(); 这是否意味着它应该是有效的: B(GenerateA()) ? 即,const ref是否意味着generateA()返回的A的副本没有被复制?这是否意味着只要B存在,返回的临时的范围就扩展了? 编辑:添加问题的意见: 是可接受的返回A&感谢! 解决方案
..
我有一个小小的困惑,其中的实现(编译器)将不提供副本构造函数和副本赋值运算符。 >当我们在类中声明复制ctor和/或复制赋值操作符时。 有人说当我们从一个有私有复制ctor和/或复制赋值操作符的类派生时。 / li> 我对第二种情况有点困惑,是第二种情况正确。 a)不会为你声明它们,所以你会得到编译时错误。 OR b)实现将声明和定义它们,但是当编译器定义的实现尝试找到基
..
请查看以下代码: #include #include //不可复制但可移动 struct non_copyable { non_copyable()= default; non_copyable(non_copyable&&)= default; non_copyable& operator =(non_copyable&&)=
..
在Qt中有一个宏,它允许声明私有拷贝构造函数和类的赋值运算符: http://qt-project.org/doc/qt-5.0/qtcore/qobject.html#Q_DISABLE_COPY 据说这个宏应该用于所有QObject(特别是QWidget)派生类。 我明白这是如何工作的,为什么它是有用的。 我不明白:原因是在QObject派生类中重复Q_DISABLE_COP
..
我在寻找处理非可复制对象的最佳实践。 我有一个互斥体类,显然不应该是可复制的。 我添加了一个私人复制构造函数来强制执行。 破坏了代码 - 一些地方只是需要修复,但我有一个通用的问题 其中一个类,使用互斥量作为数据成员或继承,被插入到容器中。 这通常在容器初始化期间发生,因此互斥体尚未初始化,因此确定,但没有副本构造函数,它不工作。 解决方案 这里有三个解决方案:
..
有没有办法使用STL包含不可复制的元素? 这样: class noncopyable { 不可复制(noncopyable&); const noncopyable& operator =(noncopyable&); public: noncopyable(){}; }; int main() { list MyList; /
..
可能重复: 我可以列表初始化一个只移动类型的向量吗? 我使用gcc 4.6.1编译此代码 ) { std :: vector> vec({ std :: unique_ptr(new int(0)), std :: unique_ptr(new int(1)), } return 0; }
..
我希望我的班级持有 v8 :: Context 和 v8 :: External 因此,我认为我必须使用持久处理。 ScriptHelper类{ public: ScriptHelper v8 :: Persistent Context):context(Context){ // ... } // ... private: v8 :: Pe
..
我一直在寻找对谷歌现在的计算器2小时。必须有什么我只是简单地眺望。有一个简单的方法,使在一个消息文本选择?截至目前,当我调用MessageBox.Show()我不能复制显示的文本。为什么不?如何将我设置文本被复制能够 我的代码: //捕获所有异常 赶上(异常前) { MessageBox.Show(ex.Message); //抛出; } 我希望能够选择出
..