我在 C 中有一些代码,以这种方式使用不完整的结构(简化示例):
某事.h
struct something;
struct something *new_something();
int work_a(struct something *something);
int work_b(struct something *something, const char *str);
void free_something(struct something *something);
一些代码.c
int some_function()
{
struct something *something;
int x;
something = new_something();
x = work_a(something);
free_something(something);
return x;
}
我在想,我这里基本上是在做 C++,为什么不试试用 C++ 写呢。问题是(我是 C++ 新手),我如何在 C++ 中实现相同的目标?如果我尝试添加声明不完整类的成员函数,我会得到
error: incomplete type 'something' named in nested name specifier
从铿锵。通过在头文件中编写完整的类,这将失去数据隐藏的全部意义,并且更改类中的私有变量将强制包括“something.h”在内的每个文件重新编译,我认为这里不需要。我不需要使用“something.h”的文件来知道这个结构/类的大小,我通常只需要一个指针就可以了。我怀疑它应该是这样的:
class Something;
Something::Something();
Something::~Something();
int Something::work_a(int x);
这样我就可以写出和 C 一样的东西,只是更短,更简洁。有任何 C++ 编码员希望启发这个凡人的 C 编码员吗?