包含std :: list的结构的c ++初始化[重复]

Posted

技术标签:

【中文标题】包含std :: list的结构的c ++初始化[重复]【英文标题】:c++ initialization of struct with std::list included [duplicate] 【发布时间】:2018-10-16 15:05:50 【问题描述】:

我有以下问题。

检查下面的代码块,它正确地初始化了我的结构中的成员。

typedef struct

    int var00;
    int var01;
struct_;

int main()



    struct_ my_struct;
    memset(&my_struct,'\0',sizeof(struct_));
    return 0;

我现在的新结构(见下文)还包括一个 std::list。我现在要做的, 在代码中保留 memset 命令?

typedef struct

    int var00;
    int var01;
    std::list<int> my_list
struct_list_included;

int main()



    struct_list_included my_struct;
    memset(&my_struct,'\0',sizeof(struct_list_included));
    return 0;

【问题讨论】:

为什么不简单地提供一个构造函数呢?此外,C++ 中不需要这些 typedef。 如果你有 C 背景并且正在学习 C++,我建议你给自己一个 good C++ book。你的代码中有很多 C-ism 是不必要的,因为 C++ 已经内置了机制来做这些事情。 【参考方案1】:

std::list 不是 POD 类型,所以我认为你不能通过memset() 做到这一点。

【讨论】:

以上是关于包含std :: list的结构的c ++初始化[重复]的主要内容,如果未能解决你的问题,请参考以下文章

七c语言之结构体

七c语言之结构体

七c语言之结构体

C语言学习笔记(15)自定义类型:结构体,枚举,联合

《C程序设计语言》笔记 函数与程序结构

C语言学习笔记结构体