私のプロジェクトを修正しました。コンパイルした後に奇妙なエラーが表示されます。C++ - エラーC3646:不明なオーバーライド指定子
#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
クラス定義をチェックしましたが、何も見つかりません。
いずれかを助けてもらえますか?
マテリアルはどこに定義されていますか? – starmole
'material 'の後に' double wtf; 'のようなプリミティブを置くとどんなことが起こるのですか? – user4581301
@starmoleこんにちは!私は '三角形 'が定義されている' shape.h'を持っています。 'material.h'は' shape.h'に含まれています。前方宣言として 'class Triangle'を使うとき、' class Material'が含まれるかどうか分かりません。しかし、ここでも 'material.h 'をインクルードしようとしましたが、それと同じ問題です。 –