2016-10-27 2 views
-5

У меня есть-структуру, вектор и приватную переменную, как показано ниже:Как получить доступ к значению в моей структуре?

typedef struct _ItemData 
{ 
    col colour;   
    int xposition;    
} ItemData; 

typedef std::vector<ItemData> Data; 

Data *lookupTable; 

Я инициализировать таблицу, используя:

lookupTable = NULL; 

Когда я добавляю к Itemdata, я так с помощью:

ItemData newData = { colour, x }; 
lookupTable[y].push_back(newData); 

Это добавляет цвет и координату x к линии Y.

Я пытаюсь получить доступ к переменной цвета и х позже с помощью:

lookupTable[yCounter][xCounter].colour 
lookupTable[yCounter][xCounter].xposition 

, но, кажется, не быть имея никакого хорошего результата, может кто-нибудь сказать мне, что я делаю неправильно, пожалуйста?

+1

Что такое 'lookupTable' указатель? Также typedef для 'struct' является C-ism и не требуется в C++. Вы можете использовать имя структуры вместо 'struct struct_name' в C++. – NathanOliver

+0

Мне дали код и дали указание не менять его, кроме как захватить x и цвет, я не уверен, что это указатель, но если да, то как бы я захватил их с помощью указателей? – GilfoyMayhew

+2

Вы используете указатель lookupTable как массив, не выделяя для него никакой памяти. Вместо этого используйте другой 'std :: vector'. – Peter

ответ

0

первый - не нужно typedef struct (или класс) в C++.

struct ItemData 
{ 
    col colour;   
    int xposition;    
}; 

Затем вам нужно

typedef std::vector<ItemData> Data; 

Data lookupTable; 


ItemData newData = { colour, x }; 
lookupTable.push_back(newData); 

может быть, вы хотели массив/коллекция/вектор векторов, не ясно. Так что я просто предположил, что вы хотели простейшую вещь

, чтобы получить данные обратно сделать

col colour = lookupTable[0].colour; 
+0

Как мне получить значения x и цвета из этого? – GilfoyMayhew

+0

Извините, если быть более ясным, мне нужно иметь доступ к каждому элементу, где Y - число, следовательно: lookupTable [y] .push_back (newData); – GilfoyMayhew

+0

Почему бы не прочитать документы о том, как использовать std :: vector или std :: array. Если после этого у вас все еще возникают проблемы, которые задают другой вопрос. Но push_back говорит: «Добавьте это в конец», [Y] сделайте это с элементом Y, вы не можете объединить 2 – pm100

Смежные вопросы