【发布时间】:2018-03-19 19:38:24
【问题描述】:
这可能是一件非常简单的事情,但我是 C++ 新手,所以需要帮助。
我正在尝试制作一个简单的蛇游戏,用 C++ 编写并打算在 MBED MCU 上运行。为了使代码尽可能整洁,我创建了一个类来存储所有位图(即 1 和 0 的 2D 数组),这些位图将作为设置和交互图标打印在游戏的菜单屏幕上。
头文件(Menu.h)如下所示:
#ifndef MENU_H
#define MENU_H
#include "mbed.h"
#include "N5110.h" //lcd screen
#include "Gamepad.h" //board on which the MBED is mounted, with leds etc.
class Menu {
public:
Menu();
~Menu();
static const char snake_title[24][70]; //This is the first of several
// arrays that I want to include in the struct
void init_array();
void welcome(N5110 &lcd, Gamepad &pad);
private:
};
#endif
这是实现文件(Menu.cpp)
#include "Menu.h"
Menu::Menu()
{
}
Menu::~Menu()
{
}
void Menu::init_array()
{
const char snake_title[24][70] = {
//Massive array of bitmaps e.g. {0,0,0,0,0,0,1,1,0,1,1,1,1.....0,0,0},
......
......
......
};
}
void Menu::welcome(N5110 &lcd, Gamepad &pad)
{
lcd.drawSprite(7,12,24,70,(int *)snake_title); //draw sprite, position 68,12
lcd.printString("Press Start",10,5);
lcd.refresh();
// wait flashing LEDs until start button is pressed
while ( pad.check_event(Gamepad::START_PRESSED) == false) {
pad.leds_on();
wait(0.1);
pad.leds_off();
wait(0.1);
}
}
我还没有尝试制作一个结构来封装所有二维数组,因为在这个阶段代码已经无法正常工作,我想知道为什么以及我可以做些什么来修复它。
我得到的两个错误对我来说毫无意义:
Error: "/tmp/CLhdO7", line 124 (column 3): Warning: L6312W: Empty Execution region description for region RW_IRAM1
Error: Undefined symbol Menu::snake_title (referred from /build/Menu/Menu.K64F.o).
感谢您的帮助!
【问题讨论】:
-
你在哪里定义你的静态
static const char snake_title[24][70];? -
相关:stackoverflow.com/questions/17056882/… 。同样在
init_array中,您定义了另一个名为snake_title的变量。 -
@KillzoneKid 在头文件的公共部分?
-
@AndreaLoriedo 这是你的声明,但你的定义在哪里?
-
const char snake_title[24][70] = {是一个局部变量,它会影响static const char snake_title[24][70];在几秒钟内完成这个问题。