Переменные не передаются по адресу класса в конструкторе
У меня есть класс 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()));
}
};