相关疑难解决方法(0)

为什么在C++ 20中不推荐使用std :: is_pod?

std::is_pod可能会在C++ 20中弃用.
这个选择的原因是什么?我应该用什么来代替std::is_pod知道某种类型是否真的是POD?

c++ type-traits

69
推荐指数
1
解决办法
6730
查看次数

使用std :: fill初始化结构对象

我有一个结构,需要初始化它的对象std::fill.

typedef struct _test
{
    char name[32];
    char key[4];
    int count;

}test;
Run Code Online (Sandbox Code Playgroud)

截至目前,我正在使用memset.我需要改成它std::fill.我在下面尝试过,但std::fill抛出了结构对象的编译器错误.

test t;
char a[5];
std::fill(a, a + 5, 0);
std::fill(t, sizeof(t), 0);
Run Code Online (Sandbox Code Playgroud)

注意:我不想用这种方式初始化. char a[5] = {0};

c++ std

3
推荐指数
1
解决办法
105
查看次数

删除班级的所有成员

昨天我读了一些同事的代码并发现了这个:

class a_class
{
public:
    a_class() {...}
    int some_method(int some_param) {...}

    int value_1;
    int value_2;
    float value_3;
    std::vector<some_other_class*> even_more_values;
    /* and so on */
 }

 a_class a_instances[10];

 void some_function()
 {
     do_stuff();
     do_more_stuff();

     memset(a_instances, 0, 10 * sizeof(a_class)); // <===== WTF?
 }
Run Code Online (Sandbox Code Playgroud)

这是合法的(WTF线,而不是公共属性)?对我来说它闻起来真的非常糟糕......用VC8编译时代码运行正常,但是在调用时用VC9编译时会抛出"意外异常" a_instances[0].event_more_values.push_back(whatever),但访问任何其他成员时.任何见解?

编辑:将memset从更改memset(&a_instances...memset(a_instances....谢谢你指出Eduard.
EDIT2:删除了ctor的返回类型.谢谢你.

结论:谢谢大家,你证实了我的怀疑.

c++

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

标签 统计

c++ ×3

std ×1

type-traits ×1