Полегче со мной, я все еще новичок в C / C ++. Я знаю, что об этом спрашивали несколько раз, и я пытался следовать приведенным решениям, но безрезультатно. Этот код предназначен для процессора NetBurner, DWORD 32-разрядный без знака, WORD 16-разрядный без знака.
заголовок func.h:
class funcs
{
// ...
private:
void myfunc();
WORD data001;
DWORD data002[100];
DWORD data003[100];
// ...
}
У меня есть эта функция, которая вызывает эти данные в моем классе, funcs.cpp. Предположим, что все переменные были инициализированы:
void funcs::myfunc()
{
data001++;
data002[data001] = x; // random x for this example
data003[data001] = y;
}
Мой компилятор жалуется: «ошибка: недопустимые типы ‘DWORD [WORD] для индекса». Я изменил тип индекса массива на «int», «unsigned int» и любой другой тип, который мог придумать, и все еще получаю ошибку. Я попробовал решения, приведенные в предыдущих постах:
void funcs::myfunc()
{
data001++;
this->data002[data001] = x; // random x for this example
this->data003[data001] = y;
}
но это было безрезультатно. Я также пытался содержать определение myfunc в классе, та же ошибка. Есть идеи / решения? Я в тупике. Спасибо, парни!!
Изменить: типы данных, представленные в заголовочном файле:
typedef unsigned char BOOL;
typedef unsigned char BOOLEAN;
typedef unsigned char BYTE; /* Unsigned 8 bit quantity */
typedef signed short SHORT;/* Signed 16 bit quantity */
typedef unsigned short WORD; /* Unsigned 16 bit quantity */
typedef unsigned long DWORD;/* Unsigned 32 bit quantity */
typedef signed long LONG; /* Signed 32 bit quantity */
typedef volatile unsigned char VBOOLEAN;
typedef volatile unsigned char VBYTE; /* Unsigned 8 bit quantity */
typedef volatile short VSHORT; /* Signed 16 bit quantity */
typedef volatile unsigned short VWORD; /* Unsigned 16 bit quantity */
typedef volatile unsigned long VDWORD; /* Unsigned 32 bit quantity */
typedef volatile signed long VLONG; /* Signed 32 bit quantity */
Скриншот:
Ваш реальный код (расшифрованный со скриншота):
DWORD u_data002;
WORD u_data003;
u_data002[u_data_003] = whatever;
который пытается индексировать целое число, как если бы это был массив или указатель.
Предположительно, либо u_data002
должен быть массив, или вы хотели написать что-то другое, чем u_data002
,