【发布时间】:2016-02-09 01:58:18
【问题描述】:
我正在尝试在 C++ 中实现这个逻辑:
Object obj(args);
while (obj.isOK()) {
obj = obj.next();
}
但我不能使用这个确切的代码,因为Object 继承了boost::noncopyable,所以它没有赋值运算符。我可以将方法和构造函数添加到Object,(但不能使其可复制),但我不希望这样做。其他问题有手动销毁和放置 new 作为解决方案,如果我为 Object 创建一个新的构造函数,我可以这样做,但同样,最好我不需要新的构造函数,这似乎是一个非常讨厌的解决方案。我有什么选择?
【问题讨论】:
-
你能给出“对象”的代码吗?我的意思是定义
-
如果 Object 是可复制和可破坏的,你可能可以 memcpy 它。
-
@JamesRoot 我们应该假设该类已被设为不可复制是有原因的。
-
@drew 如果它真的像
Object obj(args);那样被构造,那不是意味着用户定义的构造函数,因此不是 POD? -
是的,我已经删除了该评论。我认为 POD 包含的类型比它实际包含的类型更多。我的错。
标签: c++ initialization noncopyable