C ++ int испорчены, сгенерированы с помощью rand () - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь написать программу на C ++, которая использует класс Point, состоящий из координат x и y (целых) и логического значения. Координаты x и y должны находиться в диапазоне от 0 до 100, но после выполнения и с оператором print для проверки распечатанные значения будут повреждены.

Мой код выглядит следующим образом:

int main(int argc, const char * argv[]) {
vector<Point> points;

for (int i = 0; i<200; i++) {
    int rand_X = (rand() % 100) + 1;
    int rand_Y = (rand() & 100) + 1;

    Point point = Point(rand_X, rand_Y, false);
    cout<< point.getX() << " " << point.getY() << endl;
    points.push_back(point);
}

return 0;

и класс Point выглядит следующим образом, если это актуально:

struct Point { 
public:

    int x;

    int y;

    bool in_layer;

    Point(int x, int y, bool in_layer) {}
    int getX() {return this->x;}
    int getY() {return this->y;}
};

И вывод просто "-272632592 32766 "повторяется 200 раз, что, я полагаю, является искаженным значением.

Есть идеи, что может вызвать проблему?

1 Ответ

1 голос
/ 05 марта 2020

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

Если это код для обучения, вам может потребоваться назначить член x, y в конструкторе или использовать техника фоловинга (список инициализации):

Point(int _x, int _y, bool _in_layer) : x(_x),  y(_y), in_layer(_in_layer){}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...