问题标签 [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++ - 存在 std::move 时未使用的移动语义
具有以下内容:
为什么ifstream::operator=(const ifstream
&)
被调用而不是ifstream::operator=(ifstream
&&)
即使std::move()
被调用?
更新:一般来说,有没有办法将左值引用强制为右值引用?
html - 如何阻止用户从我的网页复制或打印文本?
我有一个包含文本内容的网页(在 .Net 平台上,使用 C#),我想阻止用户复制文本或打印文档。
如果用户很难获得该页面的副本,我知道他可以。但我想让它尽可能难。
我在上面找到了几点。
- 使用 Java 脚本阻止用户复制文本。缺点是用户可以轻松地从源中复制文本。
- 不要将文本制作成 1 张大图,因为用户可以一次性打印出来。
- 使用插件将文本显示为在定义的视口大小中可滚动,而无法复制文本。然后用户不得不费力地打印出他可以放入窗口视口的每一位,这对我来说很好。在这种情况下使用 Flash。
- 我见过ionCube 的 (php) 解决方案,您无法复制或查看源文本,但缺点是它可以轻松打印。我想在这里看到一个asp的编码解决方案以及阻止用户打印页面的能力:)
- Scribd 不是一个解决方案,因为如果您选择阻止用户从您的 scribd 文档中复制文本,它会将文本转换为难以阅读的图像。
可能还有更多我不知道的解决方案。
你能告诉我在这种情况下最好的解决方案吗?
c++ - 标准布局和不可复制的属性
C++11,第 9/7 节:
标准布局类是这样的类:
- 没有非标准布局类(或此类类型的数组)或引用类型的非静态数据成员,
- 没有虚函数,也没有虚基类,
- 对所有非静态数据成员具有相同的访问控制,
- 没有非标准布局的基类,
- 要么在派生最多的类中没有非静态数据成员,并且最多有一个具有非静态数据成员的基类,要么没有具有非静态数据成员的基类,并且
- 没有与第一个非静态数据成员相同类型的基类。
那么,有没有办法使具有标准布局的类不可复制?如果是,如何?
从 boost::noncopyable 私有继承将不起作用,因为它使复制构造函数私有(因此不是标准布局)。boost::noncopyable 的实现是这样的:
由于私有部分,它不是标准的布局类。我还注意到私有继承是否会破坏任何标准布局规则。
输出是:
上面的示例表明,私有继承boost::noncopyable
将类更改为不符合标准布局。我不确定这是否是一个 g++ 错误(我使用的是 g++ 4.6.1),或者该标准在某种程度上被违反了。
c++ - 创建一个不可复制的类并继承到我的类中
我正在尝试创建一个不可复制的类并将其继承到 myclass。代码如下所示:
删除允许第三种机制通过重用 delete 关键字将函数定义为“已删除”。
现在,当我尝试这个时,我的 VS 2010 上出现错误:'NonCopyable':纯说明符或抽象覆盖说明符只允许在虚拟函数上使用。
编译器认为我正在尝试创建一个纯的非虚函数。有人可以解释为什么吗?我可以通过删除“删除”关键字来解决上述问题。
c++ - 在 C++11 中显式删除了成员函数,从不可复制的基类继承是否仍然值得?
在 C++11 中显式删除了成员函数,从不可复制的基类继承是否仍然值得?
我说的是你私下继承基类的技巧,该基类具有私有或已删除的复制构造函数和复制赋值(例如boost::noncopyable
)。
这个问题中提出的优点是否仍然适用于 C++11?
我不明白为什么有些人声称在 C++11 中使类不可复制更容易。
在 C++03 中:
在 C++11 中:
编辑:
正如许多人所指出的,为私有复制构造函数和复制赋值运算符提供空主体(即 {})是错误的,因为这将允许类本身调用这些运算符而不会出现任何错误。我一开始没有添加 {},但遇到了一些链接器问题,导致我出于某种愚蠢的原因添加了 {}(我不记得当时的情况)。我知道更好知道。:-)
c++ - 错误:“无法访问在类 'boost::signals2::scoped_connection' 中声明的私有成员”?
// .cpp
(注意AddEventOccurredObserver
只是委托boost::signals2::connect()
并返回boost::signals2::connection
)
我收到以下错误。很难解释模板错误,但似乎错误是在成员声明中引起的std::vector<boost::signals2::scoped_connection> boostSignalConnections_;
我已经搜索过,我认为这可能与 scoped_connection 不可复制有关?我不知道。我使用 scoped_connection 的原因是因为这个 SO 问题: Handle connection/disconnection of many signals/slots with boost::signals2
更新
仅供参考,当我从 更改scoped_connection
为connection
时:std::vector<boost::signals2::connection> boostSignalConnections_;
。我使用的全部原因scoped_connection
是它们会在破坏时自动断开连接,而我相信 aconnection
不会。但是,我可以遍历集合并手动断开每个集合。
c++ - OpenMP 是否复制私有对象?
我正在编写一个读取大文件(3x280 GB)并对文件中的数据进行拟合的程序。并行化这样的程序非常方便,这可以通过 OpenMP 轻松完成。
我不明白的是如何在 OpenMP 中获取私有变量。众所周知,fstream 的对象是不可复制的,直观地说,这使我无法将其用作私有对象。所以文件的阅读器是共享的。
后来我遇到了一些问题,我想尝试将 fstreams 设为私有,......你猜怎么着?有效!!!这怎么可能?!如果对象是不可复制的,OpenMP 如何为每个内核使用同一对象的不同副本?
这就是我的程序的样子:
谢谢你。
c++ - make_pair 类似于不可复制类的技巧
make_pair 可以在不提及类型的情况下创建对。我想对我的类使用相同的技巧,但它继承自 boost::noncopyable,因此无法编译:
有什么选择吗?我试着让 make_bit_writer 成为朋友,然后没有想法了。
c++ - 增强不可复制的怪异
我有一个继承自的类boost::noncopyable
;说,标题摘录如下:
然后在我的解决方案的一个项目中,我有一个类(也恰好继承自boost::noncopyable
),其实现细节中的私有成员是对 A 类型对象的引用,例如,在标题摘录中:
并在实施摘录(cpp)中:
然后在我的解决方案的另一个项目中,我有一个从 B 继承的 C 类,例如,带有标题摘录:
并在实施摘录(cpp)中:
但是当我尝试在 MSVC++ 2008 中构建时,出现以下错误:
编译器只对 C 的set_A
函数有问题,对 B 没有问题set_A
。欣赏是否有人对此有任何想法并可以阐明?一如既往地感谢您的关注。
编辑:
总而言之,我在这里不明白的是为什么编译器对何时应用有关boost::noncopyable
. 当我注释掉set_A(..)
C 类中的函数时,一切编译正常。但是当我保留它时,它会给出错误,而在 B 类中它没有任何问题。我还稍微编辑了上面的错误消息以提供更多细节。我在这里注意到它说明了一些关于编译器生成函数的内容。会不会因为某种原因只发生在 C 类?为什么?
c++ - 模板类中不可复制的静态 const 成员类
我有一个不可复制的(继承自boost::noncopyable
)类,用作自定义命名空间。另外,我还有另一个类,它使用以前的类,如下所示:
此代码导致下一个错误(即使没有实例化):
错误:在类“custom_namespace_user”中没有声明“const custom_namespace custom_namespace_user::custom_namespace_()”成员函数
下一种方式是不合法的:
我应该怎么做才能声明这两个类(首先是第二个不可复制的静态 const 成员类)?这可行吗?