如何在c++中定义以struct为数据成员的类中的构造函数

How to define constructor in class with struct as data member in c++?

本文关键字:数据成员 构造函数 struct c++ 定义      更新时间:2023-10-16

我在类中创建了一个结构作为数据成员。现在,我想创建一个构造函数,将我的数据成员传递给它。如何在构造函数中传递结构。

我写了这个代码,但它不起作用。

#include <iostream>
#include <cmath>
using namespace std;
class circle
{
private:
struct center
{ 
int xcord;
int ycord;
};
struct center cordinate;
float radius;
public:
circle()
{
cordinate.xcord=0;
cordinate.ycord=0;
radius=0;
};
circle(int x, int y, float r) : cordinate.xcord(x), cordinate.ycord(y), radius(r)
{};
void showdata()
{
cout<<"Center(x,y) = ("<<cordinate.xcord<<","<<cordinate.ycord<<")"<<endl;
cout<<"Radius = "<<radius<<endl;
}
};
int main()
{
circle c1;
c1.showdata();
}

或者,如果我这样写,它仍然不起作用。

circle(int x, int y, float r) : center.xcord(x), center.ycord(y), radius(r)
{};

circle(int x, int y, float r) : center.cordinate.xcord(x), center.cordinate.ycord(y), radius(r)
{};

如何将结构传递给构造函数?

您可以初始化cordinate成员,如下所示:

circle(int x, int y, float r) : cordinate{x, y}, radius{r} {}

此外,您的默认构造函数可以简化为:

circle() : circle(0, 0, 0) {}

其委托给3参数构造函数。更好的是,只需对所有字段使用类内成员初始值设定项:

struct center
{ 
int xcord = 0;
int ycord = 0;
} cordinate;
float radius = 0;

然后你可以默认默认构造函数:

circle() = default;

这是一个演示。