问题标签 [noncopyable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 有没有办法 static_assert 模板参数是不可复制的?
有没有办法确定某些类型在编译期间是不可复制的?我需要以下内容:
c++ - 如何在 V8 中存储持久句柄?
我希望我的班级拥有 av8::Context
和 av8::External
作为成员。因此,我认为我必须使用持久句柄。
但是,持久句柄在 V8 中是不可复制的,因此代码无法编译。错误发生在两个成员被初始化的行中。对于上下文,this 在构造函数的初始化列表中,对于外部,this 在构造函数体内。
1> 错误 C2440: '=' : 无法从 'v8::Primitive *' 转换为 'v8::Object *volatile'
1> 指向的类型不相关;转换需要 reinterpret_cast、C-style cast 或 function-style cast
1> include\v8\v8.h(603) : 请参阅对正在编译的函数模板实例化 'void v8::NonCopyablePersistentTraits::Uncompilable(void)' 的引用
我考虑过使用指向持久句柄的指针,但这似乎违反直觉,因为句柄的概念已经暗示了某种引用。此外,我认为句柄会被破坏,以便 V8 的内部垃圾收集器可以清理对象。
如何将 V8 对象持久存储为类成员?
更新:即使我使用指向持久句柄的指针,对于返回持久句柄的方法,我也会遇到相同的编译器错误。
c++ - 具有显式构造函数的不可复制类型的 C++11 数组初始化
我有一个不可复制的(第三方)类。我想初始化它们的数组。这是我最好的尝试:
GCC 4.7.2 说:
错误:从初始化列表转换为 'std::array::value_type {aka Thing}' 将使用显式构造函数 'Thing::Thing(int)'</p>
好的,但这正是我想要的——使用显式构造函数。我该如何表达?如果我真的自己调用构造函数,那么我会收到一个关于复制构造函数被删除的错误。而且我不能使用std::move()
,因为 Thing 是不可移动的(我不能修改它)。
到目前为止,我发现的唯一替代方法是https://stackoverflow.com/a/15962814/4323,但这是不可取的,因为它是一堆额外的代码,而且我需要在我使用它的任何地方投射“存储”(或保留一个单独的指向它的指针,它增加了我不想要的间接性)。
我想要一个解决方案,在实际使用 Things 时提供最佳性能,而没有很多丑陋的样板。
c++ - 为不可复制对象选择构造函数
假设我有一个具有多个构造函数的不可复制类,如下所示
现在,我想构造一个对象,并选择在运行时使用哪个构造函数:
我可以用这样的指针来做到这一点: -
但这感觉混乱而缓慢。有没有一种简单的方法来选择对象的构造函数而不诉诸动态分配?
更多细节:Foo
上面的类只是为了说明问题。实际涉及的类是 Windows Gdiplus::Bitmap
- http://msdn.microsoft.com/en-gb/library/windows/desktop/ms534420(v=vs.85)。 aspx
c++ - 在地图中存储没有默认构造函数的不可复制对象(C ++ 11)
我正在尝试实现一个表示与文件的连接的类,因此它应该是一个不可复制的类。此外,由于创建对象需要文件名,我想删除默认构造函数。
这是此类的简化定义:
但是,当我尝试将此类对象存储在标准映射中时,代码无法编译:
我收到以下错误(gcc 4.9.1):
关于如何实现这一点的任何线索?我的结构中是否存在其他设计缺陷?
提前致谢
c++ - 是否可以初始化不可复制对象的向量向量?
是否可以初始化不可复制对象的向量向量?
还
我明白为什么上面的代码无法编译。我要问的是是否有解决方法。似乎如果std::vector
有一个这样的成员函数resize_from_zero
不需要复制构造函数,那么这将是可行的。
(我的问题是关于 C++03,如果这有所作为)
c++ - 使类不可复制的宏
以下宏是否存在使类不可复制的问题?
c++ - 如何使用具有不可复制类的向量(或不同的容器)?
我有以下代码:
类PrepareLogFileThread
继承自使用的Thread
类pthread
(我们使用 c++98 标准....,我可以使用auto_ptr
)。
这里的问题是Thread
' 的复制构造函数是私有的,因此不会弄乱执行或其他东西(我不是这个类的作者)。
这里的想法是我创建我的PrepareLogFileThread
对象push_back
,v
启动它们,然后它们都在f
返回之前完成。
PrepareLogFileThread
有析构函数调用,pthread_join
以便它在那里完成。
但我不能,因为我复制a
符合push_back
.
Thread
如果没有 c++11 和更改的复制构造函数,我怎么能做到这一点?
我正在使用 gcc 4.4.6,我可以使用auto_ptr
.
c++ - C++ - 如何反复重新初始化对象?
我正在尝试在 C++ 中实现这个逻辑:
但我不能使用这个确切的代码,因为Object
继承boost::noncopyable
所以它没有赋值运算符。我可以向 , 添加方法和构造函数Object
(但不能使其可复制),但我不希望这样做。其他问题有手动销毁和放置 new 作为解决方案,如果我为Object
. 我有什么选择?
c# - 是否可以在 C# 中创建不可复制的类型
在 C# 中是否有可能创建一个无法复制但只能通过引用传递的类?
C++ 中的等价物是删除复制构造函数和复制赋值运算符。