内蒙古网站建设信息,东营住房和城乡建设官网,建设 网站,设计公司网站设计1、结构体重定义错误问题#xff1a;
struct person
{int age;
}p;p是一个已经创建好的对象#xff0c;相当于struct person p; 如果放在头文件中容易被多个文件包含报重定义错误
typedef struct person
{int age;
}person;person就是struct person#xff0c;这时候并没有…1、结构体重定义错误问题
struct person
{int age;
}p;p是一个已经创建好的对象相当于struct person p; 如果放在头文件中容易被多个文件包含报重定义错误
typedef struct person
{int age;
}person;person就是struct person这时候并没有创建对象放在头文件被多个文件包含不会报错创建对象为person p;
2、std::variant同时存储不同类型的值C17新类型模板
#include iostream
#include variantint main() {// 定义一个 std::variant可以存储 int、double 或者 std::string 中的一个值std::variantint, double, std::string myVariant;// 分配 int 类型的值myVariant 42;int value std::getint(myVariant);// 分配 double 类型的值myVariant 3.14;double value std::getdouble(myVariant) ;// 分配 std::string 类型的值myVariant Hello, Variant!;string value std::getstd::string(myVariant);// 尝试访问错误的类型try {std::cout std::getint(myVariant) std::endl; // 这里会抛出 std::bad_variant_access 异常} catch (const std::bad_variant_access e) {std::cerr Exception: e.what() std::endl;}return 0;
}//判断std::variant有没有存储值
std::variantint, double, std::string myVariant;
// 将值分配给 std::variant
myVariant 42;// 检查 myVariant 中是否存储了 int 类型的值
if (std::holds_alternativeint(myVariant)) {std::cout myVariant holds an int. std::endl;
}// 检查 myVariant 中是否存储了 double 类型的值
if (std::holds_alternativedouble(myVariant)) {std::cout myVariant holds a double. std::endl;
}// 检查 myVariant 中是否存储了 std::string 类型的值
if (std::holds_alternativestd::string(myVariant)) {std::cout myVariant holds a string. std::endl;
}