私は初心者としてC++を自習しており、ネストされたクラスに関するいくつかの問題に直面しました。私は4つの頂点(頂点と呼ばれる点を定義する)を与えられた四角形のクラスを定義しようとしていました。 は2次元の点の入れ子になったクラスのオブジェクトで表されます。私は自分の答えをテストするために1点しか使用しません。質問に対する私の答えは次のとおりです。 C++のネストされたクラスエラー
#include <iostream>
#include <assert.h>
using namespace std;
class quadrangle
{
public:
class vertex
{
private:
public:
int x, y;
friend class quadrangle;
vertex();
vertex(int a, int b);
vertex(const vertex & old);
};
vertex p1;
int a, b;
friend class vertex;
quadrangle();
quadrangle(vertex(int a, int b)) : p1(a,b) {};
quadrangle(const quadrangle & old);
void draw();
};
quadrangle::vertex::vertex()
{
x = 0; y = 0;
}
quadrangle::vertex::vertex(int a, int b)
{
x = a; y = b;
}
void quadrangle::draw()
{
cout << "p1: (" << p1.x << "," << p1.y << ") " << endl;
}
quadrangle::quadrangle()
{
p1.x = 0; p1.y = 0;
}
int main()
{
quadrangle q1(quadrangle::vertex(2,3));
q1.draw();
}
はどういうわけか、私はちょうど
を持って、全体の午後のために立ち往生しています。誰かが私のコードで何が間違っているのか説明できますか?error: no matching function for call to 'quadrangle::quadrangle(quadrangle::vertex)'
quadrangle(const vertex & old);
、この初期化を行うために必要とされています:あなたのエラーはあなたがコンストラクタを持っていけない、それをすべて言う
ビルドエラーに関する質問を投稿する際には、情報メモを含めた*完全なエラー出力を含めてください。ほとんどの場合、エラーメッセージには実際に必要なすべての情報が含まれていますが、すべての情報が表示されているわけではありません。だからあなたの質問を編集して、完全なものと編集されていないものをコピーして貼り付けた完全な出力を含めてください。 –
あなたがそれをしている間に、[名前空間std;を使用してそれを落としてください](http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-in-c-considered-bad-練習);) – Quentin
若干offtopic:なぜ 'vertex'は' quadrangle'のネストされたクラスですか?例えば。クラス 'triangle'は異なる頂点を定義しますか? – VolkerK