我一直在阅读关于 C 语言中的 OOP 的文章,但是我从来不喜欢你不能像在 C + + 中那样拥有私有数据成员。但我突然想到,你可以创建两个结构。一个在头文件中定义,另一个在源文件中定义。
// =========================================
// in somestruct.h
typedef struct {
int _public_member;
} SomeStruct;
// =========================================
// in somestruct.c
#include "somestruct.h"
typedef struct {
int _public_member;
int _private_member;
} SomeStructSource;
SomeStruct *SomeStruct_Create()
{
SomeStructSource *p = (SomeStructSource *)malloc(sizeof(SomeStructSource));
p->_private_member = 42;
return (SomeStruct *)p;
}
从这里你可以将一个结构转换为另一个结构。 这被认为是不好的做法吗? 还是经常这样做?