COMPUTERZZZ 2024-05-24 21:08 采纳率: 0%
浏览 4

C++枚举参数报错是啥原因

class Player
{
public:
    Player();
    Player(Atlas* atlas);
    void loadanimation(Atlas* atlas,enum Anim_type akind);
    void Draw(int delta);
    ~Player();
private:
    Atlas* anim_atlas;
    Animation* anim_left;
    Animation* anim_right;
    enum Anim_type {
        FACE_LEFT,
        FACE_RIGHT,
        SHADOW
    };
};

//以下报错 错误(活动)    E0147    声明与 "void Player::loadanimation(Atlas *atlas, Anim_type akind)" (已声明 所在行数:9,所属文件:"D:\gamedev\Flyweight\Player.h") 不兼容    Flyweight    D:\gamedev\Flyweight\Player.cpp    20        

void Player::loadanimation(Atlas* atlas, enum Anim_type akind)
{

}

枚举类型不能做为参数类型吗?

img

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-05-24 21:08
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据你提供的错误信息和代码片段,编译器报错提示“错误(活动) E0147 声明与 'void Player::loadanimation(Atlas *atlas, Anim_type akind)' (已声明 所在行数:9,所属文件:"D:\gamedev\Flyweight\Player.h") 不兼容”。这个错误通常意味着函数的声明和定义在参数类型上不一致。

    然而,从你提供的代码片段来看,Anim_type 枚举类型作为参数类型是完全合法的。C++ 支持将枚举类型作为函数的参数类型。

    问题可能出在以下几个方面:

    1. 函数声明和定义不一致:请检查你的 Player.h 文件中的 loadanimation 函数声明是否与 Player.cpp 文件中的函数定义完全一致。确保类型和参数顺序都正确。

    2. 未初始化成员变量:错误信息中还提到了 C26495C6001,这表明 anim_atlas 成员变量在使用前没有被初始化。你需要在构造函数或 loadanimation 函数中初始化 anim_atlas

    3. 头文件包含问题:如果 Anim_type 枚举是在 Player.h 中定义的,请确保在 Player.cpp 中包含了 Player.h,这样编译器才能正确识别 Anim_type

    4. 编译器错误:有时候编译器的错误信息可能是错误的或者误导性的。如果确认代码无误,尝试清理项目并重新编译。

    5. 其他编译器设置:检查你的编译器设置,确保没有其他设置导致编译错误。

    根据你提供的图片内容,我没有看到实际的 Player.hPlayer.cpp 文件的完整代码,所以无法给出更具体的建议。请确保你的头文件和源文件中的函数声明和定义是一致的,并且所有成员变量在使用前都已经被正确初始化。

    如果你能提供更多的代码或错误上下文,我可以提供更具体的帮助。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月24日

悬赏问题

  • ¥15 数据量少可以用MK趋势分析吗
  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中