You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++调用类成员函数rps提示identifier undefined错误如何解决

问题原因&修复方案

你遇到的报错由两个错误共同导致:

  • 类成员访问权限错误:你在头文件中将rps函数定义在了private私有块下,类外部的main函数没有权限调用私有成员
  • 类成员函数调用方式错误:非静态类成员函数不能直接调用,必须通过类的实例对象触发调用,你直接写rps(p1,p2)相当于寻找全局作用域下的同名函数,而你并没有定义这个全局函数,因此报标识符未定义。

第一步:修正头文件声明

将rps函数移到public公共块下,允许外部调用:

#pragma once
#include <string>

class Game
{
public:
    std::string rps(std::string p1, std::string p2);
private:
    // 其余私有成员放在此处
};

如果你的rps函数不需要访问Game类的任何成员变量,也可以将它声明为静态成员,调用时无需创建实例:

#pragma once
#include <string>

class Game
{
public:
    static std::string rps(std::string p1, std::string p2);
private:
    // 其余私有成员放在此处
};

第二步:修正调用代码

如果用普通成员函数方式,先创建Game类实例再调用:

Game myGame;
if (myGame.rps(p1, p2) == "tie") {
    cout << "Same Move, Try Again!" << "\n" << "\n";
}

如果用静态成员函数方式,直接通过类名调用:

if (Game::rps(p1, p2) == "tie") {
    cout << "Same Move, Try Again!" << "\n" << "\n";
}

额外注意

你当前实现的rps函数没有兜底返回逻辑,如果传入的参数不是rock/paper/scissor三个有效值,函数执行到末尾没有返回值,会触发未定义行为,建议在函数最后增加默认返回逻辑,比如return "invalid";做异常处理。

内容的提问来源于stack exchange,提问作者Nurved

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 20:54:03