gpt4 book ai didi

c++ - 创建同名的结构和类

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:22:35 25 4
gpt4 key购买 nike

总结:如果您声明一个具有相同名称的 struct 和一个 class 会发生什么。

详细信息:

我正在审查一些代码,我看到了这样的警告:

warning: struct 'foo' was previously declared as a class

在用 clang 编译时,还有几个地方 clang 添加了注释:

foo.h:29:1: note: did you mean struct here?
class foo;
^~~~~
struct

显然,让结构体和类同名并不是一个好的编码习惯。看起来发生的事情是开发人员正在编写他自己的类并使用了一个已经在他包含的另一个文件中使用的名称,但他没有注意到这一点。

但是,我的问题是编译器能否区分声明为 class foo 的变量和声明为 struct foo 的变量?

编辑:

实际上发生的事情是开发人员在他创建的 class bar 中使用 class foo。我认为与此同时声明 class foo 的地方已更改为 struct bar。这就是编译代码的原因。所以我想我的问题的答案是 structclass 在声明对象时可以互换。我仍然认为始终如一地使用它们是个好主意。

最佳答案

关键字 structclass 在很大程度上是可以互换的。即使你写了 struct Foo,你也创建了一个 class 类型名称为 Foo。并且该名称在其范围内必须是唯一的范围(出于 C 兼容性的原因,有一个特殊的异常(exception),但最好忽略它)。

关于c++ - 创建同名的结构和类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16220577/

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