在类构造函数中使用结构变量
Using a struct variable inside a class constructor
struct Date
{
int year;
int month;
int day;
};
class Person
{
private:
string firstName;
string lastName;
Date dOB;
public:
Person();
Person(const string& f, const string& l, const Date& d);
};
Person::Person() : firstName("None"), lastName("None"), dOB(dOB.day(0),dOB.month(0), dOB.year(0)) {}
我有一个带有 3 个变量的结构日期,日、月、年。 下面,在类 Person 中,我使用 Date 作为构造函数。但是当我设置日、月和年 = 0 时,它显示错误,我有表达式必须具有指向函数类型的指针?我的问题是什么?我该如何解决它?
编译器认为语法dOB.day(0)
是函数调用。
您可以这样写,而不是命名成员:
Person::Person() : firstName("None"), lastName("None"), dOB{0,0,0} {}
其中dOB
的每个成员都初始化为 0。
这是一个演示。
将 CTOR 添加到Date
结构中:
Date(int day, int month, int year) : year(year), month(month), day(day) {}
使用它:
Person::Person() : firstName("None"), lastName("None"), dOB(0, 0, 0) {}
或:
Person::Person(const string& f, const string& l, const Date& d) : dOB(d) { /*...*/ };
您的Date
结构Aggregate type
- 读取聚合
您可以使用direct initialization
或list initialization
Person::Person() : firstName("None"), lastName("None"), dOB(0, 0, 0) {} // direct initialization
Person::Person() : firstName("None"), lastName("None"), dOB{0, 0, 0} {} // list initialization
上面已经包含了两种初始化dOB
结构的方法。
但是,如果您只想要Person
类的默认 ctor,您甚至不需要自己dOB
初始化,因为int
会自动初始化以0
,并且dOb
将自动初始化为{0, 0, 0}
相关文章:
- 在类构造函数中使用结构变量
- 在类构造函数中定义结构变量的参数
- 为什么我们再次从结构对象创建结构变量?
- 如何从其他结构访问受保护的结构变量
- 指向结构变量的指针未保存到eeprom
- 为什么我的程序没有更改结构变量中的值?
- 在 CPP 中初始化 typedef 结构变量
- 带有大结构变量的 CUDA 内核函数给出了错误的结果
- 有没有办法初始化不涉及编写构造函数的新结构变量?
- 结构变量查询
- 在结构声明的分号之前声明的结构变量是否为全局变量
- C++ 如何访问指针的结构变量
- 使用指向结构变量成员的指针访问该结构的成员的地址
- 为什么在 sizeof() 函数中与 * 运算符一起使用和不使用 * 运算符时,指向结构变量的指针大小会有所不同?
- 如何在类别内的类中访问类中的结构变量
- 尝试使用文本文件初始化多个结构变量
- 从类对象到结构变量的 memcpy
- C++结构变量初始化时出现问题
- 如何在 C++ 中使用带有类/结构变量的列表
- 动态数组添加元素而不创建结构变量/对象