【发布时间】:2020-10-22 09:18:23
【问题描述】:
在我的示例中,我创建了一个具有成员对象的类 Person:结构数据。此对象包含有关人员的数据。每次创建 Person-Object 时,也应初始化数据对象。
观察:在类构造函数中将对象初始化程序添加到代码 (1) 时,我收到失败消息:
incomplete type is not allowedC/C++(70)
class person {
public:
struct data;
person() { /* (1) */
person::data myPersonData;
}
private:
};
这就是我现在的练习方式:
- person 类构造函数 (class_person.hpp) 中没有结构对象初始化 myPersonData
- 在 main.cpp 中创建人员对象
- 在 main.cpp 中创建 myPersonData(我想保存这个 初始化并把它交给类构造器)
整个示例如下所示:
// class_person.hpp
#include <iostream>
#include <string>
class person {
public:
struct data;
private:
};
struct person::data {
std::string name = "John";
int age = 42;
int weight = 75;
};
_
// main.cpp
#include <iostream>
#include "class_person.hpp"
void outputPersonData(person::data myPerson) {
std::cout << myPerson.name << "\n";
std::cout << myPerson.age << "years\n";
std::cout << myPerson.weight << "kg\n";
};
int main() {
person John;
person::data myPersonData;
outputPersonData(myPersonData);
getchar();
return 0;
}
【问题讨论】:
-
struct data;只是声明person::data;该结构缺少定义,因此不完整
标签: c++ class constructor