未知的替代说明符
Unknown override specifier
我正在从事多个类的CPP项目,我已经卡了一段时间。我有粒子类(头文件(:
#pragma once
#ifndef PARTICLE_H
#define PARTICLE_H
class Particle {
private:
vec3 pos; // <- here I get an error
vec3 dir;
float speed;
float size;
float amb[3];
public:
Particle();
Particle(bool sludge);
inline void setPosX(float posX);
inline void setPosY(float posY);
inline void setPosZ(float posZ);
inline void setSpeed(float speed);
inline void setSize(float size);
void setAmb(float amb0, float amb1, float amb2);
inline float getPosX();
inline float getPosY();
inline float getPosZ();
inline float getDirX();
inline float getDirY();
inline float getDirZ();
inline float getSpeed();
inline float getSize();
void renderParticle();
void renderSludge();
};
#endif
和 cpp 文件包括(为简单起见(:
#include "stdafx.h"
#include "Tools.h"
#include "Particle.h"
#include "Player.h"
和包含结构体 vec3 的工具类:
#pragma once
#ifndef TOOLS_H
#define TOOLS_H
void distance(float posX1, float posY1, float posZ1, float radius1, float posX2, float posY2, float posZ2, float radius2);
int fibonacci(int num);
GLuint LoadObj(char * file);
GLuint LoadTexture(char * file, int magFilter, int minFilter);
void drawSphere(float r, int divisions);
void OnRender();
void OnReshape(int, int);
void OnKeyPress(unsigned char, int, int);
void OnKeyDown(unsigned char, int, int);
void OnKeyUp(unsigned char, int, int);
void OnTimer(int);
struct vec3 {
float x, y, z;
};
struct SFace {
int v[3];
int n[3];
int t[3];
};
#endif
我得到一个:Error C3646 'pos': unknown override specifier
,我不明白为什么,因为Tools.h
似乎只包含一次,而粒子类应该知道工具包含vec3
。我试图在粒子类开始时声明struct vec3
,但它不起作用。
将#include "Tools.h"
放在stdafx.h
里面似乎可以消除问题,尽管我不明白为什么。Tools.h
被包含在这里的所有类(Particle
和Player
(中,尽管被多次包含,但它应该只使用#ifndef
指令包含一次。尽管如此,在我看来,编译器无法看到Tools.h
类Particle
内部。有人可以解释为什么会发生这种情况以及为什么将标头放在文件中stdafx.h
可以解决问题?
相关文章:
- 激励'inline'说明符的真实世界示例?
- 继承期间显示未知行为的子类
- 缺少类型说明符,显式类型为"缺少错误"
- 输入中的字符串数未知(以字母表示)
- 具有未知值时的时间复杂性
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 链表中写入访问冲突的未知原因
- 正在生成未知类实例
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 叮叮当当在修复时插入多个"覆盖"说明符
- VS2019 C++未知覆盖说明符
- 在回调中使用函数时,C++未知重写说明符
- 未知的替代说明符
- VisualC++ 编译器错误 C3646:未知的重写说明符
- 使用 winhttp.h 许多未知类型说明符
- 使用字符串时,C++未知重写说明符
- C++ 数组错误 C3646:'jarArray':未知替代说明符
- 在 Visual Studio 中编译 gcc 代码会导致错误 C3646:"__attribute__":未知的覆盖说明符
- 'to_string'未知的覆盖说明符
- 未知的覆盖说明符+缺少类型说明符