gpt4 book ai didi

c++ - qualified-id 在 '=' token /对象计数器变量之前的声明中

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:44:53 25 4
gpt4 key购买 nike

我正在尝试计算有多少个实例或 mole2 类,并将该数字存储在名为 mole_count 的公共(public)静态变量中。

mole2.h

#ifndef mole2_h
#define mole2_h

#include "Arduino.h"
class mole2 {
public:
mole2(int input, int output);
void popUp();
void popdown();
boolean moleBrainThinkPopUpNow();
void setUpTimer(int up_timer);
boolean didMoleGetHit();
void setRecoveryTimer(int recovery_timer);
void decrementRecoveryTimer();
boolean dosePlayerMistMole();
void moleReset();

int input, output;
static int mole_count;
static int odds_of_poping;

private:
boolean _is_popped = false;

int _up_timer = 0;
int _recovery_timer = 0;

};
#endif

mole2.cpp

#include "Arduino.h"
#include "mole2.h"

int mole2::odds_of_poping = 10;

mole2::mole2(int input, int output) {
input = input;
output = output;
int mole2::mole_count = mole2::mole_count + 1;
pinMode(input, INPUT);
pinMode(output, OUTPUT);
}

void mole2::popUp() {
_is_popped = true;
digitalWrite(input, HIGH);
}

void mole2::popdown() {
_is_popped = false;
digitalWrite(input, LOW);
}


boolean mole2::moleBrainThinkPopUpNow() {
if (_recovery_timer == 0 && _is_popped == false && rand() % odds_of_poping == 1) {
popUp();
return true;
}
else {
return false;
}
}

void mole2::setUpTimer(int up_timer) {
_up_timer = up_timer;
}

boolean mole2::didMoleGetHit() {
if (_is_popped == true && digitalRead(input) == HIGH) {
popdown();
_up_timer = 0;
return true;
}
else {
return false;
}
}

void mole2::setRecoveryTimer(int recovery_timer) {
_recovery_timer = recovery_timer;
}

void mole2::decrementRecoveryTimer() {
if (_recovery_timer > 0) {
_recovery_timer--;
}
}

boolean mole2::dosePlayerMistMole() {
if (_is_popped == true && _up_timer > 0) {
_up_timer--;
}
if (_is_popped == true && _up_timer == 0) {
popdown();
return true;
}
else {
return false;
}
}

void mole2::moleReset() {
popdown();
_up_timer = 0;
_recovery_timer = 0;
}

完全错误

Arduino: 1.6.12 (Windows 7), Board: "Arduino/Genuino Uno"

C:\Users\Strings\Documents\Arduino\libraries\mole2\mole2.cpp: In constructor 'mole2::mole2(int, int)':

C:\Users\Strings\Documents\Arduino\libraries\mole2\mole2.cpp:9:25: error: qualified-id in declaration before '=' token

int mole2::mole_count = mole2::mole_count + 1;

^

exit status 1
Error compiling for board Arduino/Genuino Uno.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

最佳答案

首先是这个:

int mole2::mole_count = mole2::mole_count + 1;

没有任何意义:你在声明一些东西并将它赋值给它的值 + 1

无论如何,您已经在您的类中声明了 mole_count。因为你在构造函数中,所以你已经在 mole2 类中(“qualified-id”位来自这里),所以你只需要做:

mole_count++;

此外,您必须在 .cpp 类中声明变量的存储并对其进行初始化:

int mole2::mole_count = 0;

关于c++ - qualified-id 在 '=' token /对象计数器变量之前的声明中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40939138/

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