小编D_w*_*der的帖子

在结构的联合成员中使用 std::string 时无法引用默认构造函数

我有一个非常基本的结构,它有一个枚举和一个联合。

typedef struct
{
    enum v{a,b,c}v;
    union w{
        int a;
        bool b;
        std::string c;
    }w;

}Data_Set2;

int main()
{
Data_Set2 val; // Shows errror that the default constructor cannot be referenced
return 0;
}
Run Code Online (Sandbox Code Playgroud)

在使用这样的结构时,我得到了无法引用默认构造函数的错误代码 C2280。当我以稍微不同的方式声明结构时,如下所示

typedef struct
{
    enum v{a,b,c}v;
    union w{
        int a;
        bool b;
        std::string c;
    }; // changed here.

}Data_Set2;
Run Code Online (Sandbox Code Playgroud)

错误不再存在。我不明白这背后的原因。谁能解释为什么会发生这种情况

c++ constructor struct

4
推荐指数
1
解决办法
2521
查看次数

使用std :: thread从C++ 11中的两个类调用函数

我正在尝试实现一个API,让用户可以并行创建两个通信通道.一个通道使用TCP,另一个使用UDP.我有两个代表两个频道的课程.这些类实现了不同的功能.我希望两个通道的功能并行运行.为此,我std::thread用来创建两个线程,每个通道一个(类).想法是以下以下头文件的样子

class Channel_1
{
public:
     int myfunc(int a, int b);
};

class Channel_2
{
public:
    int anotherfunc(int a, int b);
};
Run Code Online (Sandbox Code Playgroud)

在主cpp文件中包含头文件

int main()
{
  int a = 10, b = 20;
  Channel_1 ch1;
  Channel_2 ch2;

  std::thread t(ch1.myfunc, a,b);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到错误说没有构造函数的实例std::thread存在.

我有以下问题.

  1. 我们不能从线程构造函数中的类调用函数吗?
  2. 使用线程来调用来自不同类的函数的想法是否有意义?

c++ sockets multithreading c++11 stdthread

0
推荐指数
1
解决办法
81
查看次数

在 JSON 字符串中序列化 utf-8 字符的标准方法

在 JSON 中序列化 utf-8 字符串的标准方法是什么?它应该带有 u 转义序列还是应该是十六进制代码。

\n\n

我想用 JSON 格式的单位序列化一些传感器读数。

\n\n

例如,我的温度读数单位为 \xc2\xb0C。是否应该序列化为

\n\n
{\n "units": "\\u00b0"\n}\n\xc2\xb4\xc2\xb4\xc2\xb4\nor should it be something like \n\xc2\xb4\xc2\xb4\xc2\xb4\n{\n "units":"c2b0"\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者这两者都可以得到标准支持。

\n

c++ json utf-8 jsoncpp c++11

0
推荐指数
1
解决办法
4129
查看次数

标签 统计

c++ ×3

c++11 ×2

constructor ×1

json ×1

jsoncpp ×1

multithreading ×1

sockets ×1

stdthread ×1

struct ×1

utf-8 ×1