【发布时间】:2019-12-26 19:27:07
【问题描述】:
在 C++ 中声明类指针变量时,何时以及为什么要使用 'struct' 关键字?
我在嵌入式环境中看到了这一点,所以我怀疑这是 C 语言的某种保留。我已经看到了很多关于在声明结构对象时何时使用“struct”关键字的解释,因为它与C 中的命名空间 (here),但我找不到任何人谈论为什么在声明类指针变量时可能会使用它。
例如,在 CFoo.h 中:
class CFoo
{
public:
int doStuff();
};
inline Foo::doStuff()
{
return 7;
}
然后在不同的班级:
void CBar::interesting()
{
struct CFoo *pCFoo;
// Go on to do something interesting with pCFoo...
}
【问题讨论】:
-
@πάνταῥεῖ 再一次,糟糕的骗局。那个是关于 C 的。这个问题是关于 C++ 的。区别是问题的全部意义。请停下来。
-
把这个作为一个 C 问题的骗子关闭不是一个好主意。在 C 中,这纯粹是风格问题。
-
@Lundin 在 C++ 中,这是一个风格问题。在 C 中,这是强制性的。
-
@LightnessRacesinOrbit 如果您使用 typedef,则不会,这是迄今为止 C 中最常见的样式。
-
@Lundin 好吧,那是作弊!这个问题不是关于使用类型别名,而是关于使用类型的实际名称及其限制/约束/要求。是的,您可以使用类型别名来绕过 C 中的上述要求。是的,这非常常见。不过,作为旁注,像
struct tm这样的东西没有得到这种处理,所以它们也非常常见——即使在 C++ 代码中也是如此,哈哈
标签: c++ class variables scope elaboration