相关疑难解决方法(0)

C中的默认构造函数

对于使用结构定义的C用户类型,是否有某种方法可以使用某种默认构造函数(如C++版本)?

我已经有一个像快速初始化程序(就像那个一样)的宏,pthread_mutex但我想知道你是否可以在声明中填充结构的某些(或所有)字段.

例如,通过这个pthread_mutex例子,我想

pthread_mutex_t my_mutex;
Run Code Online (Sandbox Code Playgroud)

具有相同的效果

pthread_mutex_t my_mutex = PTHREAD_MUTEX_INITIALIZER;
Run Code Online (Sandbox Code Playgroud)

c constructor

28
推荐指数
5
解决办法
7万
查看次数

在C++代码中初始化C结构

有没有更好的方法来初始化C++代码中的C结构?

我可以在变量声明点使用初始化列表; 但是,如果在编译时不知道所有参数,或者如果我没有声明本地/全局实例,那么这没有用,例如:

遗留C代码,它声明了结构,并且还使用了API

typedef struct
{
    int x, y, z;
} MyStruct;
Run Code Online (Sandbox Code Playgroud)

使用C库的C++代码

void doSomething(std::vector<MyStruct> &items)
{
    items.push_back(MyStruct(5,rand()%100,items.size()));//doesn't work because there is no such constructor
    items.push_back({5,rand()%100,items.size()});//not allowed either

    //works, but much more to write...
    MyStruct v;
    v.x = 5;
    v.y = rand()%100;
    v.z = items.size();
    items.push_back(v);
}
Run Code Online (Sandbox Code Playgroud)

创建本地实例然后一次设置一个成员(myStruct.x = 5;等)是一个真正的痛苦,当尝试将20个不同的项添加到容器时有点难以阅读...

c c++ structure initialization

4
推荐指数
2
解决办法
1745
查看次数

标签 统计

c ×2

c++ ×1

constructor ×1

initialization ×1

structure ×1