新的编辑区域和坐标
new Edit Area and coordinates
好的,我编辑我的代码,我想做的很简单,我有一个带有 corrdinates(x,y) 的大形状。我想要做的是调整原始形状的大小,将其存储在名为 "new" 的 class 中的新图形中,并将这个新形状移动到我想要的坐标 (x,y)。
// Example program
#include <iostream>
#include <string>
// Base class Shape
class Shape
{
public:
Shape(int inwidth, int inheight): width(inwidth), height(inheight){
}
void ResizeW(int w)
{
width = w;
}
void ResizeH(int h)
{
height = h;
}
void moveF(int x_delta, int y_delta)
{
x1 = x_delta;
y1 = y_delta;
x2 = x_delta;
y2 = y_delta;
}
protected:
int x1=0, y1=0, x2=5, y2=6;
int width;
int height;
};
// Primitive Shapes
class Ps2: public Shape
{
public:
Ps2 (int width, int height): Shape(width, height){
}
int getArea()
{
return (width * height);
}
};
// Derived Shapes
class New: public Ps2
{
int x1_relativ, y1_relativ, x2_relativ, y2_relativ;
public:
int area;
New(): Ps2(8, 4), area(getArea()){ }
};
int main(void)
{
New kit;
moveF.kit (4, 3, 5, 7);
std::cout << "Total area: " << kit.getArea();
std::cout << "Cordinates are: " << kit.moveF();
return 0;
}
现在我有四个错误: 在函数 'int main()' 中:
66:6: 错误: 'moveF' 未在此范围内声明
68:51: 错误:没有匹配函数来调用 'New::moveF()'
68:51: 注意:候选人是:
21:11: 注意: void Shape::moveF(int, int)
21:11:注意:候选人需要 2 个参数,提供 0 个。
另外我认为我无法使用 "move.f" 我创建了任何帮助?
嗯,编译器会准确告诉你问题出在哪里:
moveF.kit (4, 3, 5, 7);
不是有效代码。您是说 kit.moveF 吗?另外,为什么有四个参数? moveF 有两个。
std::cout << "Cordinates are: " << kit.moveF();
有两个错误,首先,moveF 需要两个您未提供的参数,其次,kit.moveF 是空的,因此不会产生任何 std::cout 可以显示的内容。
此外,您的属性 x1、x2、y1、y2 无法从外部访问。这似乎不是故意的。派生的 class 可以访问它们,但是 none 现在可以访问它们。
此外,New 对于 class 来说是一个糟糕的名字。起初看到新套件让我感到困惑;。 new 明明不是reserved,但是感觉是reserved,懂我的意思吧
我的建议是您阅读有关 classes 和方法的教程。看来您对方法工作原理的理解存在缺陷。
好的,我编辑我的代码,我想做的很简单,我有一个带有 corrdinates(x,y) 的大形状。我想要做的是调整原始形状的大小,将其存储在名为 "new" 的 class 中的新图形中,并将这个新形状移动到我想要的坐标 (x,y)。
// Example program
#include <iostream>
#include <string>
// Base class Shape
class Shape
{
public:
Shape(int inwidth, int inheight): width(inwidth), height(inheight){
}
void ResizeW(int w)
{
width = w;
}
void ResizeH(int h)
{
height = h;
}
void moveF(int x_delta, int y_delta)
{
x1 = x_delta;
y1 = y_delta;
x2 = x_delta;
y2 = y_delta;
}
protected:
int x1=0, y1=0, x2=5, y2=6;
int width;
int height;
};
// Primitive Shapes
class Ps2: public Shape
{
public:
Ps2 (int width, int height): Shape(width, height){
}
int getArea()
{
return (width * height);
}
};
// Derived Shapes
class New: public Ps2
{
int x1_relativ, y1_relativ, x2_relativ, y2_relativ;
public:
int area;
New(): Ps2(8, 4), area(getArea()){ }
};
int main(void)
{
New kit;
moveF.kit (4, 3, 5, 7);
std::cout << "Total area: " << kit.getArea();
std::cout << "Cordinates are: " << kit.moveF();
return 0;
}
现在我有四个错误: 在函数 'int main()' 中: 66:6: 错误: 'moveF' 未在此范围内声明 68:51: 错误:没有匹配函数来调用 'New::moveF()' 68:51: 注意:候选人是: 21:11: 注意: void Shape::moveF(int, int) 21:11:注意:候选人需要 2 个参数,提供 0 个。 另外我认为我无法使用 "move.f" 我创建了任何帮助?
嗯,编译器会准确告诉你问题出在哪里:
moveF.kit (4, 3, 5, 7);
不是有效代码。您是说 kit.moveF 吗?另外,为什么有四个参数? moveF 有两个。
std::cout << "Cordinates are: " << kit.moveF();
有两个错误,首先,moveF 需要两个您未提供的参数,其次,kit.moveF 是空的,因此不会产生任何 std::cout 可以显示的内容。
此外,您的属性 x1、x2、y1、y2 无法从外部访问。这似乎不是故意的。派生的 class 可以访问它们,但是 none 现在可以访问它们。
此外,New 对于 class 来说是一个糟糕的名字。起初看到新套件让我感到困惑;。 new 明明不是reserved,但是感觉是reserved,懂我的意思吧
我的建议是您阅读有关 classes 和方法的教程。看来您对方法工作原理的理解存在缺陷。