я только начал приближаться в cpp.так что, может быть, это простая проблема, может быть, это структурная проблема, и я должен изменить свой дизайн.
У меня есть 3 факта и 1 проблема.
факт 1:
у меня есть класс Gesture с вектором Point внутри
vector<Point> Gesture::getPoints();
экземпляры Gesture получают вектор в конструкторе, поэтому я думаю, что это может быть нормальный вектор (без указателя).векторы не распределяются между жестами, и жест не изменяет свои собственные точки (кроме нормализации).
fact 2:
Класс жестов имеет статический метод, который нормализует все точки между [0: w].нормализовать взять адрес памяти для нормализации на месте.я думаю, что нормализация на месте могла бы быть хорошей вещью.этот метод нормализации используется виджетами для визуализации пути в векторе для нормализации точки между 0 и шириной виджета
static void Gesture::normalize(vectot<Point> &pts, int w);
fact 3:
У меня есть виджет, который визуализируетОчки:
void MyWidget::setGestures(vector <Gesture *> gs)
, поскольку этот жест создается динамически другим виджетом. Я подумал, что он удобен для работы с вектором указателя и может выполнять некоторые new Gesture
вызовы.
проблема:
У меня есть несколько виджетов, которые визуализируют жест.каждый с разной шириной (== разной нормализацией).
при первом использовании:
Gesture::rescale(this->w, this->points);
Gesture * g = new Gesture(getPoints(), centroids);
и все нормально
во второй раз у меня есть:
vector<Gesture* > gs = foo();
int num_gesture = gs.size();
for (int i = 0; i < num_gesture; ++i) {
vector<Point> pts = gs.at(i)->getPoints();
Gesture::rescale( widget->getWidth(), pts );
}
widget->setGestures(gs);
и здесь есть проблема, потому что этот виджет рисует ненормализованные точки.
Я попробовал немного сумасшествия с указателями, но если программа не падает, в любом случае, она не нормализоваласьи он получает какую-то ошибку, например: указатель на временную.
Я не знаю, что думать, сейчас.