ОШИБКА: функция не является статическим членом данных «Класса» - C ++ - PullRequest
0 голосов
/ 24 марта 2019

Мне очень жаль, если на это уже где-то ответили, но после нескольких часов поиска я не смог ничего найти или понять.

Будучи совершенно новым для ООП, я тренируюсь с классами, пытаясь создать класс, в котором я заранее определил двухмерную матрицу символов. Я продолжаю получать следующую ошибку:

ошибка: 'char Matrix2d :: keyss [4] [4]' не является статическим членом данных 'class Matrix2d' char Matrix2d :: keyss [ROWS] [COLS] =

Мой заголовок следующий:

const int ROWS = 4;
const int COLS = 4;

class Matrix2d
{
  public:

   char keys [ROWS][COLS];

  private:

};

А My .cpp это:

char Matrix2d::keys [ROWS][COLS] =

{
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

Это простой код, созданный для запуска с клавиатуры Arduino.

Заранее благодарю за любую помощь и надеюсь, что я предоставил достаточно информации, поскольку я впервые публикую здесь.

1 Ответ

1 голос
/ 24 марта 2019

Если класс определен так:

const int ROWS = 4;
const int COLS = 4;

class Matrix2d
{
  public:

   char keys [ROWS][COLS];

  private:

};

, что означает keys - это атрибуты экземпляра Matrix2d , но форма

char Matrix2d::keys [ROWS][COLS] =

{
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

определяет и инициализирует атрибут класса Matrix2d , это несовместимо


Если вам нужен атрибут класса («статический»), выполните

const int ROWS = 4;
const int COLS = 4;

class Matrix2d
{
  public:
     static char keys [ROWS][COLS];    
};

char Matrix2d::keys [ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

Если вы хотите, чтобы атрибут экземпляров имел это значение по умолчанию, выполните

class Matrix2d
{
  public:
     char keys [ROWS][COLS] = {
       {'1','2','3','A'},
       {'4','5','6','B'},
       {'7','8','9','C'},
       {'*','0','#','D'}
     };
};

В обоих случаях я призываю вас изменить видимость

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...