C ++类中的2D数组的结构

时间:2018-03-19 19:38:24

标签: c++ arrays struct

这可能是一件非常简单的事情,但我是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);
    }


}

我还没有尝试过封装所有2D数组的结构,因为在这个阶段代码已经无法正常工作了,我想知道为什么以及我可以做些什么来修复它。

我得到的两个错误对我没有意义:

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).

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

当您声明static const char snake_title[24][70];成员时,您没有为其提供定义。

  

在其类定义中声明静态数据成员不是   定义,除了cv-qualified之外,可能是不完整的类型   无效。静态数据成员的定义应出现在   命名空间范围包含成员的类定义。在里面   命名空间范围内的定义,静态数据成员的名称   应使用::运算符通过其类名限定。该   静态数据成员定义中的初始化表达式   其类的范围

尝试在void Menu::init_array()内声明和定义具有相同名称的变量与您的成员变量无关。你需要的是一起摆脱init_array(),而是在snake_title中定义你的Menu.cpp

const char Menu::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},
    ......
    ......
    ......
};