私は複数のクラスの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
を私は粒子クラス(ヘッダファイル)を持っていますなぜなら、Tools.h
は一度しか含まれていないようで、ParticleクラスはToolsにvec3
が含まれていることを知っているはずです。私は粒子クラスの冒頭にstruct vec3
を宣言しようとしましたが効果がありませんでした。私は何の効果もなかったので、ヒントや助けに感謝します。
particle.hはtools.hのwhatsについて知っていますか? – Eddge
C++ 11でコンパイルしていますか? 'override'キーワードはC++ 11以降では新しくなっています(あなたが指定したコードでは使用されていませんが)。 – CoryKramer
' Particle.cpp'以外のファイルに 'Particle.h'を含む可能性があります。その時点では、 'Tools.h'は含まれていないかもしれません。必要なヘッダーを 'Particle.h 'に含めます。ヘッダーを2回インクルードすることには何も問題ありません。特に、 '#include'ガードと' #pragma once'の両方によって保護されているようです。 –