gpt4 book ai didi

c++ - 解析 typedef 和命名空间 VS2010

转载 作者:行者123 更新时间:2023-11-28 03:39:47 26 4
gpt4 key购买 nike

我正在制作一个物理引擎(在一本书的帮助下),这本书建议我为引擎创建一个 namespace ,并且在第一部分我为变量声明一个“typedef”,例如所以

typedef float real;

我可以理解作者给出的解释是“如果需要更改精度,那么您可以转到这一行并更改它,然后最多可能需要更改 10 个辅助函数,并且表示清晰, 但我认为它与其他两件事是一致的,所以我希望这是可以遵循的。

这本书要求我在一个文件中定义 typedef 和辅助函数(以便在需要更改时最大限度地减少文件跳跃),然后在编译其他文件之前包含它,并在命名空间中完成所有这些操作(我命名为 Physics),然后在另一个文件中创建要在引擎中使用的类。虽然直接的问题是智能感知和解决

genFunction.h
namespace Physics{
typedef float real;
}


Classes.h
#include "genFunction.h"
namespace Physics{
class Vector3{
public :
real x; // visual studio is throwing that Physics::real is not a type name
real y;
real z;
// VS is not offering collapsing, or any form of
// auto/assistance with lines.
// almost like it does not want me to have classes
// in my own namespaces
Vector3(){ // uncolapsable
x = 0;
y = 0;
z = 0;
}
};
}

考虑到编译器忽略了我已经完成的 typedef,我做错了什么吗,它是问题发生的范围,然后当我在类里面时 VS 甚至没有显示建议在一个自制的命名空间中让我有点烦恼。

编辑:找到类型解析的主要解决方案。显然不是 { 我在其中一个方法上放了一个 ( ,这导致它表现得就像整个命名空间不存在一样。尽管 VS 仍然不会给出我有任何类型的帮助(函数/类/命名空间折叠,或完成建议,即使使用 ctrl+空格键)我也有一些我使用的辅助函数(自制的 pow(), sqrt() ),如果我使用它们会导致链接器错误不在一个类中,但是当我对它们进行内联时,这种情况就消失了。解析链接器是一件坏事吗?

最佳答案

首先,编译器不会抛出任何东西。既然你没有另外说,我假设你的代码编译得很好。问题出在 Intellisense 上,仅此而已。

众所周知,C++ 中的 Intellisense 不稳定。有时有效,有时无效。这可能取决于月相。

有时您可以通过更加明确来“鼓励”它。如果您键入 ::,它应该建议全局命名空间的所有成员。 ::Physics:: 并且它应该建议 Physics 命名空间的成员。

可能只是等待(或重启 VS 或重建?)直到它决定重新解析您的代码。

关于c++ - 解析 typedef 和命名空间 VS2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9644047/

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