问题标签 [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.

0 投票
6 回答
2599 浏览

c++ - How to make a copyable boost::signal?

I get why boost::signal is noncopyable (it's because copying a signal doesn't have a clear meaning), but I need a version of it that does provide some sort of copy ctor (either a no-op or one that copies all connections).

The reason I need this is because in my project many objects become noncopyable just by virtue of featuring signals, and to treat them with comfortable value semantics (shared_ptrs are not as comfortable) I need to manually provide copy-ctors, violating DRY. Clearly a sort of quasi-copyable signal would be a good workaround for C++'s ugliness here.

First solution that comes to mind is inheriting signal and providing a copy ctor in the derived class, but that's a no-go because signal doesn't have a virtual dtor.

Thoughts?

0 投票
3 回答
3262 浏览

c++ - 如何创建不可复制元素的容器

有没有办法使用带有不可复制元素的 STL 容器?

像这样的东西:

0 投票
5 回答
3458 浏览

c++ - boost的虚拟析构函数:不可复制的类?

我对以下代码有疑问:

我的想法是 MyClass 不能使用构造或赋值来复制。如果我想支持从我不想支持的 MyClass 派生类,则需要使用虚拟析构函数。我不打算创建指向此类的指针并传递它们。

我不想要一个单例,我看不出删除虚拟析构函数的不利之处。

如果删除不可复制类的虚拟析构函数,是否会引入潜在问题?是否有更好的做法来处理不需要是单例的类,但我只想要另一个类中的一个实例而不支持继承?

0 投票
10 回答
66446 浏览

c++ - 如何使这个 C++ 对象不可复制?

见标题。

我有:

我需要从这里做什么才能使 Foo 不可复制?

谢谢!

0 投票
5 回答
746 浏览

c++ - 通常使重量级课程不可复制是一种好习惯吗?

我有一个可能包含许多顶点的 Shape 类,并且我正在考虑将复制构造函数/复制分配设为私有,以防止意外不必要地复制我的重量级类(例如,通过值而不是通过引用传递)。

要制作 Shape 的副本,必须故意调用“克隆”或“复制”方法。

这是好习惯吗?我想知道为什么 STL 容器不使用这种方法,因为我很少想按值传递它们。

0 投票
3 回答
1585 浏览

html - 复制时如何排除部分文本

我试图让一些文本不可复制,我的目的不是阻止人们从我的网站复制文本,而是更容易使用。我有一个文件大小的文件列表,但我只想复制文件名而不是文件大小。

到目前为止,我已经尝试了几种不同的方法,但都没有奏效,我已经设法使用 CSS 用户选择使文本不可选择,但是当我选择两行或多行时,我仍然可以复制文件大小。

我只是尝试使用一个按钮来防止复制,这不起作用,有什么想法吗?

目标浏览器是 Mac 上的 Safari,因此适用于最新 Safari 的实验性 CSS3 或 HTML5 命令是可以的。

(感谢 mvds 的建议标题和一种解决方案)

0 投票
10 回答
9907 浏览

c++ - 在 C++ 中插入容器时如何处理不可复制的对象

我正在寻找处理不可复制对象的最佳实践。

我有一个互斥类,显然不应该是可复制的。我添加了一个私有复制构造函数来强制执行。

这破坏了代码 - 一些地方只需要修复,但我有一个通用问题,即使用互斥锁作为数据成员或通过继承的类被插入到容器中。

这通常发生在容器初始化期间,因此互斥锁尚未初始化,因此没问题,但如果没有复制构造函数,它就无法工作。将容器更改为包含指针是不可接受的。

有什么建议吗?

0 投票
2 回答
2343 浏览

c++ - booster::noncopyable 的用例是什么?

首先:是 boost::noncopyable 还是 booster::noncopyable。我在不同的地方都见过。

为什么要让一个类不可复制?你能给出一些示例用例吗?

0 投票
1 回答
1001 浏览

input - SFML 输入系统问题

所以我将我的游戏引擎从 SDL 移植到 SFML,现在我的输入系统出现了问题。输入.h

输入.cpp

我从中得到这些错误:

C:\c++\sdl\bullwhip\lib\Bullwhip\/Input.h:15: 错误:'bc_Input::App' 不能出现在常量表达式中 C:\c++\sdl\bullwhip\lib\Bullwhip\/Input .h:15: 错误:'.' 不能出现在常量表达式 C:\c++\sdl\bullwhip\lib\Bullwhip\/Input.h:15: 错误:函数调用不能出现在常量表达式 C:\c++\sdl\bullwhip\lib\ Bullwhip\/Input.h:15:错误:ISO C++ 禁止初始化成员“输入”C:\c++\sdl\bullwhip\lib\Bullwhip\/Input.h:15:错误:使“输入”静态 C:\ c++\sdl\bullwhip\lib\Bullwhip\/Input.h:15:错误:非整数类型'sf::Input&'的静态数据成员的类内初始化无效

c:\program files (x86)\codeblocks\mingw\bin../lib/gcc/mingw32/4.4.0/../../../../include/SFML/System/NonCopyable.hpp:57 : 错误: 'sf::NonCopyable::NonCopyable(const sf::NonCopyable&)' 是私有 c:\program files (x86)\codeblocks\mingw\bin../lib/gcc/mingw32/4.4.0/.. /../../../include/SFML/Window/Window.hpp:56:错误:在此上下文中

0 投票
4 回答
1805 浏览

c++ - C++ 常量左值引用

假设我有:

  • 不可复制的 A 类
  • 类 B 作为成员, const A& a (并在其构造函数中获取 A 并将其设置在其初始化列表中)
  • 一个函数A GenerateA();

这是否意味着这样做应该是有效的: B(GenerateA()) ?

即, const ref 是否意味着 generateA() 返回的 A 的副本没有完成?这是否意味着只要 B 存在,返回的临时范围就会扩展?

编辑:评论中的附加问题:如果左值是 const A&,将 A& 从 GenerateA() 返回到本地 A 是否可以接受?

谢谢!