[英]Using an object from a class as an object for another class c++
我正在编写C ++程序,并且必须使用一个类的实例作为另一个类的私有成员。 我需要用作成员实例的类的代码如下:
class Triangle
{
public:
Triangle(int _height, int _base){ set(_height, _base); }
//constructor
void set(int _height, int _base){ height = _height; base = _base; }
int area(){ return ((height*base)/2); }
int perimeter(){ return (2*(sqrt(((base/2)*(base/2)) +. (height*height))) + base); }
private:
int height;
int base;
};
这是将上述实例用作私有成员的类的定义:
Class Penta
{
Public:
Penta(int b );
Penta(){ TriPart.set(10, 10); }
Private:
Triangle TriPart;
};
当我编译上面的代码时,编译失败并显示以下错误:
error: no matching function for call to 'Triangle::Triangle()'
如果您能帮助我,我非常感谢。
代码中有几个问题。 但这很容易解决。
如果您要编译代码,那么编译器将已经告诉您了,出了什么问题。
因此,在代码的第一部分中,周长的计算中有一个“”。 在“ +”之后。 另外,您要小心。 您正在计算中创建双精度值,然后以整数形式返回。 那不管用。
在第二个定义中,“类”,“公共”和“私人”一词大写。 您需要使用正确的关键字。 您的Penta(int b)构造函数没有正文。 而且该类也没有数据成员,您可以在其中分配它,
然后,如编译器所报告的那样,您的Triangle类没有默认构造函数,例如Triangle(){}
。 Penta的默认构造函数需要调用Triangle的某些构造函数,但是没有。
有几种可能的解决方案:
Triangle(){}
添加默认构造函数 Penta() : TriPart(10,10) {}
我还建议初始化所有变量,例如
int height{ 0 };
int base{ 0 };
最后但并非最不重要的一点是,我建议读一本关于类及其构造函数的不错的C ++书。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.