如何在以下代码中初始化成员变量?
#include <string>
#include <iostream>
using namespace std;
int main()
{
typedef struct Employee{
char firstName[56];
char lastName[56];
};
typedef struct Company {
int id;
char title[256];
char summary[2048];
int numberOfEmployees;
Employee *employees;
};
typedef struct Companies{
Company *arr;
int numberOfCompanies;
};
}
答案 0 :(得分:1)
你可以添加像这样的构造函数:
struct Employee{
char firstName[56];
char lastName[56];
Employee() //name the function as the struct name, no return value.
{
firstName[0] = '\0';
lastName[0] = '\0';
}
};
答案 1 :(得分:0)
首先:你以错误的方式使用typedef
typedef struct Employee{
char firstName[56];
char lastName[56];
};
你需要typedef的另一个名字
typedef struct _Employee{
char firstName[56];
char lastName[56];
}Employee;
但由于你使用的是c ++,因此不需要使用typedef。
第二:不要在函数内声明结构。将它们声明为
以外的。第三:使用构造函数将成员初始化为默认值,例如:
struct Employee{
Employee()
{
strcpy (firstName, ""); //empty string
strcpy (lastName, "asdasd"); // some value, every object now by default has this value
}
char firstName[56];
char lastName[56];
};
第四:使用std :: string class(#include)来更轻松地处理字符串
第五:考虑输入类而不是struct,这两者之间的唯一区别是,默认情况下类将变量声明为private(您可以更改变量urself的可见性),而struct默认将它们声明为public。
答案 2 :(得分:0)
由于您已使用std::string
语句中指示的#include
,因此您应该按如下方式更改类声明(并在main()
函数体之外执行此操作):
struct Employee {
std::string firstName;
std::string lastName;
};
typedef struct Company {
int id;
std::string title;
std::string summary;
int numberOfEmployees;
Employee *employees;
};
typedef struct Companies{
Company *arr;
int numberOfCompanies;
};