Я сам изучаю C++ как новичок, и у меня возникли некоторые проблемы с вложенными классами. Я пытался определить класс для четырехугольника, заданного четырьмя вершинами (определим точку, называемую вершинами), которая представлена объектом вложенного класса для двумерных точек. Я использую только одно очко, чтобы проверить свой ответ. Мой ответ на этот вопрос:Ошибка вложенных классов в 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)'
и пристали в течение целого дня. Может кто-нибудь объяснить, что не так в моем коде? Я знаю, что что-то не так с моим конструктором, но я просто не мог это исправить ...
При размещении вопросов о ошибках сборки, пожалуйста, включите вывод * полной * ошибки, включая любые информационные заметки. Скорее всего, сообщение об ошибке содержит всю необходимую информацию, но, поскольку мы не видим этого, у нас нет всей информации. Поэтому, пожалуйста, отредактируйте свой вопрос, чтобы включить полный вывод, в полном объеме и неотредактированный, просто скопированный. –
Пока вы на нем, пожалуйста, [drop this 'using namespace std;'] (http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-in-c-considered-bad- практика);) – Quentin
слегка offtopic: Почему 'vertex' является вложенным классом' quadrangle'? Будет, например, class 'triangle' определяют разные вершины? – VolkerK