gpt4 book ai didi

c++ - C++ 中的嵌套类错误

转载 作者:太空狗 更新时间:2023-10-29 19:57:21 26 4
gpt4 key购买 nike

作为初学者,我正在自学 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(vertex(int a, int b)) : p1(a,b) {};

它是一个构造函数,它接受一个返回顶点的函数并接受 2 个 int。然后用未初始化的成员 ab 初始化成员顶点 p1。

你想要的只是:

quadrangle(const vertex& v) : p1(v) {}

(并删除成员 ab)。

关于c++ - C++ 中的嵌套类错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36978208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com