2017-01-08 13 views
0

C++クラスについて学び始めていますが、問題があります。私はコンストラクタと初期化リストについて読んだが、私はまだ私の問題を解決することはできない。 foo.hの中別のクラスコンストラクタを呼び出すC++

コード:

class point{ 
    public: 
    double x,y; 
    point(double x1, double y1); 
}; 

class line: public point{ 
    public: 
    double A,B,C; 
    double distance(point K); 
    line(point M, point N); 
}; 

そしてfoo.cpp中:もちろん

point::point(double x1, double y1){ 
    x=x1; 
    y=y1; 
} 
line::line(point M, point N){ 
    if(M.x!=N.x){ 
     A=-(M.y-N.y)/(M.x-N.x); 
     B=1; 
     C=-(M.y-A*M.x); 
    } 
    else{ 
     A=1; 
     B=0; 
     C=-M.x; 
    } 
} 

それは動作しません、私はラインでのポイントのコンストラクタを呼び出す方法を知らないのでコンストラクタ。これどうやってするの ? 私はそのようSTHを行うしたいと思います:

point A(5,3),B(3,4); 
line Yab(A,B); 
+0

ルックgetterとsetter - メンバ変数をpublicにしないでください –

+2

'line'はなぜ' point'から継承するのですか?ポイント属性 'x'と' y'には使用されません。 – lucianopaz

+0

ああ、それは動作します:D私はちょうど継承を削除しました。 –

答えて

2

なぜクラスラインクラスPointから継承するのでしょうか? 解決方法: 1 - ポイントから継承しない 2 - Lineクラスに2つのプロパティを追加します。ポイント_p1、_p2を作成してから、Line :: Line(Point A、Point B){_p1 = A; _p2 = B;あなたは、派生クラスのつまりからベースのコンストラクタを呼び出したい場合は

PPSビジネスロジックとアクセスパターンをいじっていない}

PS:

class Base {} 
class Derived: public Base 
{ 
     Derived() : Base() {} 
} 

または

Derived::Derived() : Base() 
{ 
}  
+0

ありがとうございます。それを解決した。 –

関連する問題