Ich bin selbstlernend C++ als Anfänger, und ich habe einige Probleme in Bezug auf geschachtelte Klassen konfrontiert. Ich habe versucht, eine Klasse für ein Viereck mit vier Ecken zu definieren (definieren Sie einen Punkt namens Scheitelpunkte), der durch ein Objekt einer geschachtelten Klasse für zweidimensionale Punkte dargestellt wird. Ich verwende nur einen Punkt, um meine Antwort zu testen. Meine Antwort auf die Frage lautet:Verschachtelte Klassen Fehler in 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();
}
Irgendwie bekam ich nur
error: no matching function for call to 'quadrangle::quadrangle(quadrangle::vertex)'
und haben einen ganzen Nachmittag stecken. Könnte jemand erklären, was in meinem Code falsch ist? Ich weiß, dass etwas nicht stimmt mit meinem Konstruktor aber ich konnte einfach nicht reparieren ...
Wenn Sie Fragen zu Buildfehlern stellen, fügen Sie bitte die * complete * -Fehlerausgabe ein, einschließlich aller Informationshinweise. Wahrscheinlich enthält die Fehlermeldung alle tatsächlich benötigten Informationen, aber da wir nicht alles sehen können, haben wir nicht alle Informationen. Bitte bearbeiten Sie Ihre Frage so, dass die vollständige Ausgabe vollständig und unbearbeitet, einfach kopiert eingefügt wird. –
Während Sie dabei sind, bitte [Drop das 'mit Namespace std;'] (http://stackoverflow.com/questions/1452721/why-isusing-namespace-std-in-c-sidered-bad- Übung);) – Quentin
leicht offtopic: Warum ist 'Vertex 'eine geschachtelte Klasse von' Viereck'? Würde z.B. Klasse "Dreieck" definiert verschiedene Ecken? – VolkerK