Отредактированный ответ ниже второго блока код.
Хорошо, во-первых, как прокомментировал @StoryTeller, ваш вектор хранит указатели; поэтому вам нужно будет использовать синтаксис -> для доступа к объекту, на который они указывают.
Поэтому вы должны, вероятно, настроить класс myPoints, поскольку структуры обычно не видны (структуры в C++ - это то же самое, что и класс, за исключением модификатора доступа по умолчанию к их свойствам и функциям, является общедоступным). Я предположил бы, что этот класс, чтобы посмотреть что-то вроде
class myPoints // you should probably split this into a header and cpp
{
int tag;
int noOfPoints;
myPoints() : tag(0), noOfPoints(0) // construct with whatever values, you can pass your own
{}
void setNoOfPoints(noOfPoints)
{
this->noOfPoints = noOfPoints;
}
void setTag(tag)
{
this->tag = tag;
}
int getNoOfPoints(){ return noOfPoints; }
int getTag(){ return tag; }
};
Предполагая, что вы инициализирован вокс с некоторыми * MyPoints литералы вы можете просто получить доступ и использовать MyPoints объекты следующим
int tag = Vox.at(i).at(j).at(k)->getTag();
int noOfPoints = Vox.at(i).at(j).at(k)->getNoOfPoints();
Vox.at(i).at(j).at(k)->setNoOfPoints(6);
Vox.at(i).at(j).at(k)->setTag(6);
Оставляя выше ответ, как и с ответом @ Aconcagua, вы можете найти его полезным в будущем.
В любом случае, я думаю, что я немного понимаю, что вы пытаетесь сделать, учитывая код, который вы уже написали, как сказал @StoryTeller, вы можете просто использовать свой класс Voxel для хранения тегов и свойств noOfPoints для каждого вектора , Класс Воксельный будет выглядеть примерно так (простите мою лень в не обеспечивает заголовок)
class Voxel
{
private:
vector< vector < vector < myPoints* > > > Vox;
int tag;
int noOfPoints;
public:
Voxel() : tag(0), noOfPoints(0) // construct with whatever values, you can pass your own
{}
vector< vector < vector < myPoints* > > >& getVox(){ return Vox; } //Ignore my shitty naming scheme, you can use this to set or get elements
void setNoOfPoints(noOfPoints)
{
this->noOfPoints = noOfPoints;
}
void setTag(tag)
{
this->tag = tag;
}
int getNoOfPoints(){ return noOfPoints; }
int getTag(){ return tag; }
};
, а затем получить доступ к вашему вектору и установить метку и noOfPoints, просто создать экземпляр Voxel, он должен выглядеть примерно так
//A new vector of voxels
vector<Voxel> voxels;
voxels.push_back(Voxel); // this only needs to be a 1d array, you can construct each voxel however you like and add as many as you like
//settting the tag for the first element
voxels[0].setTag(0);
//getting the tag for the first element
int tag = voxels[0].getTag();
// manipulating the contained vector
voxels[0].getVox().at(i).at(j).at(k) = //whatever you are storing in your vector
Вы храните указатели, поэтому для доступа к ним вы используете синтаксис «arrow». Vox [i] [j] [k] -> getAttribute() ' – StoryTeller
Пожалуйста, сообщите нам, что такое использование меток LabelTag и NumberOf Points? Вы можете сохранить одну точку на вектор, так что у вас есть 3 точки в одном 3D-массиве. – pospich0815
@ pospich0815, это и попытка умного (возможно) использования отправки тега. Специализация шаблона может быть лучше 'getAttribute