小编gri*_*ngo的帖子

清除“struct”类型的对象,无需进行简单的复制赋值;使用赋值或值初始化代替

我正在开发一个包含 C 和 C++ 代码的模块。问题是我收到以下禁止警告。我提供了导致该警告的代码。

warning: 'void* memset(void*, int, size_t)' clearing an object of type 'struct OtherStructure_s ' with no trivial copy-assignment; use assignment or value-initialization instead [-Wclass-memaccess]\n")
Run Code Online (Sandbox Code Playgroud)
struct TEST {
  explicit TEST();
  OtherStructure_s _otherStructure;
};

TEST::TEST(){
  memset(&_otherStructure, 0, sizeof(OtherStructure_s));
}
Run Code Online (Sandbox Code Playgroud)

消除该警告的最佳解决方案是什么?如果我在构造函数中初始化结构, TEST::TEST():_otherStructure(){}这会是一个好的解决方案吗?

c++ constructor struct memset

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

填充类向量,同时从数据中分离行为

我想创建一个类,我可以将行为与数据分开.目标是在不必使用setter函数的情况下填充向量.

我创建了一个函数X()来将元素推送到向量中.问题是矢量的大小总是如此0 a.X().size() = 0.

我有点失落,我找不到另一种方法去做.除了使用setter函数.还有另一种方法吗?

#include <iostream>
#include <string>
#include <vector>

class A {
    public: 
     A() {};
     std::vector<int> X() {return x;}
    private :
     std::vector<int> x;

};

int main()
{
  A a;
  a.X().push_back(10);

  std::cout << a.X().size() << std::endl;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++

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

标签 统计

c++ ×2

constructor ×1

memset ×1

struct ×1