gpt4 book ai didi

C++: 'this' 关键字错误

转载 作者:行者123 更新时间:2023-11-30 00:51:06 24 4
gpt4 key购买 nike

我正在尝试在 C++ 中创建一个 poptart 自动售货机程序,并且我正在尝试使用 this 关键字,但是我总是收到一条错误消息,指出“this”只能在非静态成员函数中使用。下面是我遇到这样一个问题的代码的一部分

代码:

#include <iostream>
#include "HasCredit.h"
using namespace std;


void insertMoney(int money)
{
cout<<"You inserted: " << money;
money = money+this->currentContext->getStateParam(Credit);
this->currentContext->setStateParam(Credit,money);
cout<< "Total: "<<money<<endl;
this->currentContext->setState(Has_Credit);
}

任何关于我为什么会收到此错误的建议将不胜感激。干杯。

编辑:insertMoney 方法位于名为 HasCredit 的类中。

Edit2:成员声明现在在构造函数之外进行

Edit3:添加状态类声明

类定义代码如下:

#include <iostream>
#include "State.h"
#include "StateContext.h"
using namespace std;

class HasCredit: public State
{
HasCredit (StateContext* Context) : State(Context) {
}
void insertMoney(int);
void MakeSelectionCoating(int);
void MakeSelectionFilling(int);
void moneyRejected(void);
void addPopTarts(int);
void dispense(void);

};

状态类声明代码如下所示:

#include <iostream>
#include "Transition.h"
using namespace std;

class State: public Transition
{
protected:
StateContext* currentContext;
public:
State(StateContext* Context);
};

最佳答案

this 指针只在类内有效。您的 insertMoney 函数未在类中声明。参见 http://www.learncpp.com/cpp-tutorial/87-the-hidden-this-pointer/ .

在您对 insertMoney 的定义中(在代码中,而不是在类中),您没有将其声明为 hasCredit 的成员。您需要改用 void hasCredit::insertMoney

关于C++: 'this' 关键字错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22847923/

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