Переменные не передаются по адресу класса в конструкторе

У меня есть класс CStep5, в этом классе есть конструктор CStep5{...}; в котором я передаю переменные Xt1, Yt1, Ht1, Xt2, Yt2, Ht2 по адресу класса CStep4{}.

Проблема: такое ощущение что компилятор не видит мой конструктор и не передает данные функций из класса CStep4.

class CStep5{
private:
static double d;
public:
CStep5(CSte45& Pt1, CStep4& Pt2){};
CStep5 f_Cp(){
    d = sqrt((pow(Xt1+Xt2, 2) + pow(Yt1-Yt2, 2) + pow(Ht1+Ht2, 2)));//Все переменные подчеркнуты
    return (CStep5 (f_Cp()));
}

};

class CStep4: public CStep3{
protected:
static double Xt1;
static double Yt1;
static double Ht1;
static double Xt2;
static double Yt2;
static double Ht2;
public:
CStep4(CCoord& P1, CStep3& t2, CPeleng& a_peleng_1);
CStep4 Pt1(){ 
    Xt1 = x1 + t1 * cos_ax;
    Yt1 = y1 + t1 * cos_ay;
    Ht1 = h1 + t1 * cos_ah;
    return (CStep4 (Pt2()));

}  
CStep4 Pt2(){
    Xt2 = x2 + t2 * cos_bx;
    Yt2 = y2 + t2 * cos_by;
    Ht2 = h2 + t2 * cos_bh;
    return (CStep4 (Pt2()));
}

};


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

Автор решения: Егор Красный

А с чего он должен видеть конструктор?) Вы ведь и не унаследовали класс CStep5 от класса CStep4

class CStep5 : protected CStep4 {
private:
    static double d;
public:
    CStep5(CStep5& Pt1, CStep5& Pt2) {};
    CStep5 f_Cp() {
        d = sqrt((pow(Xt1 + Xt2, 2) + pow(Yt1 - Yt2, 2) + pow(Ht1 + Ht2, 2)));
        return (CStep5(f_Cp()));
    }
};
→ Ссылка
Автор решения: Егор Красный

Если Хотите без наследования, можно геттерами выкрутится, главное создать экземпляр класса, а т.к. вам нужны только статические поля, можно в него ничего и не присваивать, вполне корректно отработать должно:

class CStep4 : public CStep3 {
protected:
    static double Xt1;
    static double Yt1;
    static double Ht1;
    static double Xt2;
    static double Yt2;
    static double Ht2;
public:
double getXt1() { return this->Xt1; }
double getYt1() { return this->Yt1; }
double getHt1() { return this->Ht1; }
double getXt2() { return this->Xt2; }
double getYt2() { return this->Yt2; }
double getHt2() { return this->Ht2; }
        

    CStep4(CCoord& P1, CStep3& t2, CPeleng& a_peleng_1);
    CStep4 Pt1() {
        Xt1 = x1 + t1 * cos_ax;
        Yt1 = y1 + t1 * cos_ay;
        Ht1 = h1 + t1 * cos_ah;
        return (CStep4(Pt2()));

    }
    CStep4 Pt2() {
        Xt2 = x2 + t2 * cos_bx;
        Yt2 = y2 + t2 * cos_by;
        Ht2 = h2 + t2 * cos_bh;
        return (CStep4(Pt2()));
};

class CStep5 {
private:
    static double d;
    CStep4 Pt2;
public:
    CStep5() {};
    CStep5 f_Cp() {
        d = sqrt((pow(Pt2.getXt1() + Pt2.getXt2(), 2) + pow(Pt2.getYt1() - Pt2.getYt2(), 2) + pow(Pt2.getHt1() + Pt2.getHt2(), 2)));
        return (CStep5(f_Cp()));
    }
};
→ Ссылка