【问题标题】:Non-copyable struct in C? [duplicate]C中的不可复制结构? [复制]
【发布时间】:2019-09-20 07:29:34
【问题描述】:

看完这个页面,我已经知道如何实现不可复制了 C++ 中的类。

(How do I make this C++ object non-copyable?)

现在我想在 C 中实现不可复制,

但我在 C 中找不到类似的代码。

所以想问一下如何用C实现。

【问题讨论】:

  • C 和 C++ 是不同的语言,您无法实现从一种语言到另一种语言的所有内容
  • C没有C++这样的保护机制。
  • 返回一个私有结构的指针。没有人可以猜测大小并复制它。您还必须提供访问“成员”的功能
  • 我觉得这个问题别有用心。为什么你认为你需要它?我问是因为 C 代码通常处理不同的习语。
  • 如果你不能复制它,它甚至不可读,所以它有什么用,除非它定义的模块为你允许的那些操作提供了一个接口。

标签: c


【解决方案1】:

您可以使用opaque pointers 执行此操作。这个想法是:

  • 您在某处定义了一个结构,并根据指向该结构的指针定义了它的所有操作。那可能是一个独立的编译单元。
  • 你的结构的使用者只得到一个声明,但没有得到该结构的完整定义,这意味着他们不知道结构的布局,甚至不知道结构的大小。因此,它们能够接收、存储和传递任何指向该结构的指针,但不能接收、存储和传递它的

【讨论】:

    猜你喜欢
    • 2012-02-25
    • 2013-08-20
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2015-05-31
    • 1970-01-01
    相关资源
    最近更新 更多