Вопрос в объявлении переменной

Относительно новичок в с++, столкнулся со странной проблемой.

Я объявляю переменные в модификаторе доступа private:

В модификаторе public: ввожу в функцию f_t1(){...} формулу t1 = ... ; и некоторые переменные не могут объявится.

class CStep3: public CCoord {
private:
void T1(double ah, double bx, double ax, double bh, double ay, double by){
static const double a1 = cos(bh)*cos(ax)-cos(bx)*cos(ah);
static const double a2 = cos(by)*cos(ah)-cos(bh)*cos(ay);
static const double a3 = cos(bx)*cos(ay)-cos(by)*cos(ax);
static const double b1 = cos(bx)*(h2-h1)-cos(bh)*(x2-x1);
static const double b2 = cos(bh)*(y2-y1)-cos(by)*(h2-h1);
static const double b3 = cos(by)*(x2-x1)-cos(bx)*(y2-y1);
}
public: 
CStep3 f_t2(){
    CStep3 t2 = -((a1*b1 + a2*b2 + a3*b3)/(pow(a1,2) + pow(a2,2) + pow(a3,3)));
    return t2;
}   

В частности не объявляются -((a1* b1 + a2* b2 + a3*b3), с остальным все в порядке


Ответы (1 шт):

Автор решения: Иван Павлов

Объявите переменные таким образом:

    class CStep3: public CCoord {
        private:
 static double a1;
 static double a2;
 static double a3;
 static double b1;
 static double b2;
 static double b3;
        void T1(double ah, double bx, double ax, double bh, double ay, double by){
        a1 = cos(bh)*cos(ax)-cos(bx)*cos(ah);
        a2 = cos(by)*cos(ah)-cos(bh)*cos(ay);
        a3 = cos(bx)*cos(ay)-cos(by)*cos(ax);
        b1 = cos(bx)*(h2-h1)-cos(bh)*(x2-x1);
        b2 = cos(bh)*(y2-y1)-cos(by)*(h2-h1);
        b3 = cos(by)*(x2-x1)-cos(bx)*(y2-y1);
        }
        public: 
        CStep3 f_t2(){
            CStep3 t2 = -((a1*b1 + a2*b2 + a3*b3)/(pow(a1,2) + pow(a2,2) + pow(a3,3)));
            return t2;
        }
→ Ссылка