gpt4 book ai didi

c++ - 类中的结构?

转载 作者:搜寻专家 更新时间:2023-10-31 00:03:50 26 4
gpt4 key购买 nike

我有课。我制作了两个单独的文件,头文件和 C++ 文件。我正在使用它为我正在开发的 opengl 游戏创建一个或多或少的 Light“对象”。以下是文件:光.h

#ifndef LIGHT_H
#define LIGHT_H


class Light
{
public:
Light(float ix, float iy, float iz, float ir, float ig, float ib , float ia, int itype, int iindex);
virtual ~Light();
float x,y,z;
int index;
int type;
struct ambient
{
float r, g, b, a;
};
struct diffuse
{
float r, g, b, a;
};
struct specular
{
float r, g, b, a;
};
protected:
private:
};

#endif // LIGHT_H

和 Light.cpp

#include "../include/Light.h"

Light::Light(float ix, float iy, float iz, float ir, float ig, float ib , float ia, int itype, int iindex)
{
index=iindex;
type=itype;
x=ix;
y=iy;
z=iz;
ambient.r = 0.2;
ambient.g = 0.2;
ambient.b = 0.2;
ambient.a = 1.0;
specular.r = 0.8;
specular.g = 0.8;
specular.b = 0.8;
specular.a = 1.0;
diffuse.r = ir;
diffuse.g = ig;
diffuse.b = ib;
diffuse.a = ia;
}

Light::~Light()
{
//dtor
}

当我尝试编译时,它会抛出一条错误消息:错误:'.' 标记前应为不合格 ID|对于我为结构成员赋值的每一行(环境、漫反射、镜面反射)首先,我什至无法解释这个错误。不知道这是什么意思。其次,我看不到我做错了什么。请帮忙!

最佳答案

应该这样读:

#ifndef LIGHT_H
#define LIGHT_H


class Light
{
public:
Light(float ix, float iy, float iz, float ir, float ig, float ib , float ia, int itype, int iindex);
virtual ~Light();
float x,y,z;
int index;
int type;
struct
{
float r, g, b, a;
} ambient;
struct
{
float r, g, b, a;
} diffuse;
struct
{
float r, g, b, a;
} specular;
protected:
private:
};

#endif // LIGHT_H

基本问题是您声明结构存在并给出类型的名称,但您没有声明该类型的任何变量。因为,根据您的用法,很明显这些结构的类型不需要名称(它们可以是匿名结构),所以我在声明之后移动了名称,所以您改为声明一个变量。

正如 GMan 所指出的,这仍然不是最优的。这是解决此问题的更好方法:

#ifndef LIGHT_H
#define LIGHT_H


class Light
{
public:
Light(float ix, float iy, float iz, float ir, float ig, float ib , float ia, int itype, int iindex);
virtual ~Light();
float x,y,z;
int index;
int type;

struct Color {
float r, g, b, a;
};

Color ambient, diffuse, specular;
protected:
private:
};

#endif // LIGHT_H

关于c++ - 类中的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5268507/

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