Вектор как переменная-член класса

#c

#c

Вопрос:

Точно так же, как я создаю переменные-члены для x , y , и theta , как бы я создал переменные-члены для типа vector<double> в конструкторе? То, что я делаю ниже, похоже, не работает.

 Positioning::Positioning(double x, double y, double theta) {
    this->globalX = x;
    this->globalY = y;
    this->globalTheta = theta;
    
    vector<double> this->xs;
}
  

Я сделал #include <vector> и имею std::vector<double> xs; в частном разделе Positioning.hpp

Редактировать

Заголовочный файл:

 namespace Position {
    class Positioning {
        private:
            double globalX;
            double globalY;
            double globalTheta;
            std::vector<double> xs;

        public:
            Positioning(double x, double y, double theta);
            ~Positioning();
            void updateGlobalPosition(double left_dist, double right_dist, double rear_dist);
            double getX();
            double getY();
            double getTheta();
    };
}
  

Комментарии:

1. vector<double> this->xs; это не то, как вы определяете переменные-члены класса в c . Как выглядит определение Positioning класса?

2. Спасибо за ваше время, я добавил файл заголовка в качестве редактирования

3. Итак, вы спрашиваете о том, как инициализировать этот член векторного класса? Пожалуйста, вам следует соответствующим образом адаптировать формулировку ваших вопросов.

4. Извините за это. Я новичок в английском, поэтому прошу прощения. Я думаю, что люди, приведенные ниже, помогли мне с моим замешательством. Я благодарю вас за ваше время.

Ответ №1:

Это работает

 Positioning::Positioning(double x, double y, double theta) {
    this->globalX = x;
    this->globalY = y;
    this->globalTheta = theta;
}
  

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

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

Комментарии:

1. О, хорошо. Итак, если бы я хотел присвоить переменной this->xs вектор <double>, я бы просто сделал this->xs = xs ? Поскольку xs создается в закрытом разделе объявления класса.

2. Предположим xs , что это переменная правильного типа, тогда это будет работать.

3. @itsMeMoriarty Это предполагает, что есть переменная xs , которую вы хотите скопировать. Если вы добавите его в качестве четвертого параметра конструктора, конечно. Или, если вы хотите, чтобы он был пустым в конструкторе, вам ничего не нужно делать: он уже существует и по умолчанию пуст.