如何使这个C ++对象不可复制? [英] How do I make this C++ object non-copyable?

查看:107
本文介绍了如何使这个C ++对象不可复制?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

查看标题。

我有:

class Foo {
   private:
     Foo();
   public:
     static Foo* create();
}

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

What need I do from here to make Foo un-copyable?

谢谢!

推荐答案

class Foo {
   private:
     Foo();
     Foo( const Foo& other ); // non construction-copyable
     Foo& operator=( const Foo& ); // non copyable
   public:
     static Foo* create();
}

如果您使用boost,您还可以继承noncopyable: http://www.boost.org/doc/libs/1_41_0/boost/noncopyable.hpp

If you're using boost, you can also inherit from noncopyable : http://www.boost.org/doc/libs/1_41_0/boost/noncopyable.hpp

编辑:C ++ 11版本,如果你有一个编译器支持此功能:

C++11 version if you have a compiler supporting this feature:

class Foo {
   private:
     Foo();
     Foo( const Foo& other ) = delete; // non construction-copyable
     Foo& operator=( const Foo& ) = delete; // non copyable
   public:
     static Foo* create();
}

这篇关于如何使这个C ++对象不可复制?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆