Запрос на член '' в '', который не относится к классу - PullRequest
0 голосов
/ 15 июня 2019

Я пытаюсь перебрать структурный массив и инициализировать его член "history", массив int, равным 0 (Несомненно, у вас будет более подходящее предложение, чем однозначное значение). цикл времени, который будет приветствоваться, но вопрос не в этом).

Я получаю сообщение об ошибке. Я не только не понимаю, но и не вижу, как многочисленные интернет-сообщения об этом входят в функцию в моем случае.

Ошибка:

In function 'int main()':....
|error: request for member 'history' in 'coin', which is of non-class type 'coin_t [10]'|

Это мой код (настоящая копия-вставка из нового проекта):

#include <iostream>
using namespace std;

// Hand input parameters
const int coinCount=10;
int weight[coinCount]={11,11,9,10,10,10,10,10,10,10};
const int maxDepth=6;
const int caseCount=360;

// GLOBALS
struct coin_t
{
    float w;
    int history[maxDepth];
    int curDepth;
};

coin_t coin[coinCount];

int main()
{
    int i,j;

    //Initialize coin struct array
    for(i=0;i<coinCount;i++)
    {
        coin[i].w=weight[i];
        coin[i].curDepth=-1;
        for(j=0;j<maxDepth;j++) coin.history[j]=0; // Here's the error
    }
}

1 Ответ

1 голос
/ 15 июня 2019

coin - это массив struct coin_t с размером coinCount. Вам необходимо получить доступ к operator[] для соответствующего элемента в массиве.

coin[i].history[j] = 0;
//  ^^^

Если вы хотите инициализировать history с нуля, вы могли бы сделать лучше

struct coin_t
{
    float w;
    int history[maxDepth]{0};
    //                   ^^^^
    int curDepth;
};

, с помощью которого вы можете пропустить дополнительный цикл

    for (j = 0; j < maxDepth; j++)
        coin[j].history[j] = 0;

При этом C ++ предлагает лучше std::array. Рассмотрите использование, если это подходит для случая.

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