gpt4 book ai didi

c - 类型转换结构以隐藏实现与 pimpl-idiom

转载 作者:太空宇宙 更新时间:2023-11-04 03:04:46 24 4
gpt4 key购买 nike

我知道在 C 中看起来像这样的 pimpl-idiom:

// foobar.h
struct FooBar {
char *someString;
struct FooBarImpl *pImpl;
};
// foobar.c
struct FooBarImpl {
char *hiddenString;
};

然而,通过类型转换,我可以摆脱不透明的指针并减少有人搞砸实现的可能性:

// foobar.h
struct FooBar {
char *someString
};
// foobar.c
struct FooBarImpl {
// FooBar members
char *someString
// FooBarImpl members
char *hiddenString
};

在后一种情况下,任何对 FooBar 进行操作的函数都将简单地类型转换为 FooBarImpl 以访问“私有(private)”成员。

我知道这会成为一个问题,例如,如果某人要向 FooBar 添加一些成员但不为 FooBarImpl 做同样的事情。但是在我的例子中,FooBar 将只包含一个成员并且不太可能改变。

这会被认为是好的做法,还是当我想隐藏实现细节时我应该坚持使用 pimpl-idiom?

谢谢。

最佳答案

编译器是你的 friend ;不要通过使用显式类型转换来欺骗它,尤其是在复合类型之间。坚持使用第一种方法,如果您前向声明实现结构,您将永远不必透露其内容。

关于c - 类型转换结构以隐藏实现与 pimpl-idiom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6893152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com