ошибка: » не было объявлено в этой области

Поэтому я делаю простую геометрическую программу и выполняю тестовую компиляцию.

По какой-то причине, когда я компилирую этот код, я получаю следующую ошибку:

base.cc: In member function ‘void seg::init_seg(p, p)’:
base.cc:20:3: error: ‘mid’ was not declared in this scope
base.cc:22:3: error: ‘b’ was not declared in this scope

Но что интересно, ошибка не появляется для точек 1 и 2, только в середине и b.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

struct p{
float x=0.0f,y=0.0f;
void init_p(float sx, float sy){
x = sx;
y = sy;
}
};

struct seg{
p 1, 2, mid, b;
float length = 0.0f, m = 0.0f;
void init_seg(p p1, p p2){
1.init_p(p1.x, p1.y);
2.init_p(p2.x, p2.y);
length = sqrt((1.x - 2.x)^2 + (1.y - 2.y)^2);
mid.init_p((1.x + 2.x)/2, (1.y + 2.y)/2 );
m = ((1.y - 2.y)/(1.x - 2.x));
b.init_p(0, (1.y - (m*1.x)));
}
};

Почему появляется эта ошибка, и почему только для этих двух точек?

0

Решение

Вот одна группа ошибок:

float x=0.0f,y=0.0f;
float length = 0.0f, m = 0.0f;

В отличие от Java и C #, вы не можете выполнить инициализацию в C ++ до C ++ 11. В вашем случае это также не нужно: единственный конструктор, который у вас есть, устанавливает оба x а также yТаким образом, нули, которые вы устанавливаете, будут в любом случае перезаписаны.

Вот еще одна ошибка:

p 1, 2, mid, b;

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

p p1, p2, mid, b;
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector