我修改了我的项目,编译后弹出一些奇怪的错误。
#ifndef BART_RAY_TRACER_MESH_H
#define BART_RAY_TRACER_MESH_H
#include <vector>
#include "assert.h"
#include "vec3f.h"
class Triangle;
class Mesh {
public:
uint32_t nverts;
bool _is_static;
vec3f *verts;
vec3f *_verts_world;
Material material;
// 2 error occurs at the line below
Matrix4x4 _trans_local_to_world; // '_trans_local_to_world': unknown override specifier & missing type specifier - int assumed. Note: C++ does not support default-int
Matrix4x4 _trans_local_to_world_inv;
TransformHierarchy *_trans_hierarchy;
std::vector<Triangle* > triangles;
// ...
};
#endif
当我稍微更改声明的顺序时,错误总是发生在 Material material
之后的行,但消息不同:
#ifndef BART_RAY_TRACER_MESH_H
#define BART_RAY_TRACER_MESH_H
#include <vector>
#include "assert.h"
#include "vec3f.h"
class Triangle;
class Mesh {
public:
uint32_t nverts;
bool _is_static;
vec3f *verts;
vec3f *_verts_world;
Material material;
// 2 error occurs at the line below
TransformHierarchy *_trans_hierarchy; // error C2143: syntax error: missing ';' before '*' & error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Matrix4x4 _trans_local_to_world;
Matrix4x4 _trans_local_to_world_inv;
std::vector<Triangle* > triangles;
// ...
};
#endif
我已经搜索了关于 SO 的类似问题,但似乎没有一个有用。我检查了我的 vec3f
, Triangle
类定义,以防缺少分号但我找不到任何分号。
任何人都可以帮忙吗?
原文由 jinglei 发布,翻译遵循 CC BY-SA 4.0 许可协议
这只是微软的又一个骗局。本质上是这样的:
如果你将它提交给像 g++ 这样的合理编译器,它会给你一个有用的错误信息:
另一方面,MSVC 提出了这种胡言乱语:
使用此密钥,您可以将 Microsoft 的错误消息解密为: