在C ++中处理复合文字的跨平台方法是什么?

艾迪的

以跨平台方式在C ++中使用复合文字的方式是什么?我知道这是扩展,而不是“官方” C ++,但是必须有一种方法,对吗?

我的结构是:

struct v2 {
    int x, y; 
};

我想要:

  1. 当一个结构已经初始化时,一次性更改所有结构值。
  2. 创建一个内联对象,所以我可以直接将结构作为参数传递给函数

这可行,但非常麻烦:

v2 position = {0,1};
DoSomething(position);
DoSomething( v2 {0,1} );

在MSVC中可用,但在Clang中给出语法错误: error: expected ')'

DoSomething( (v2) {0,1} );

在Clang中可用,但在MSVC cl.exe中给出语法错误: error C4576: a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax

这在MSVC中有效,但在Clang中是语法错误 error: expected expression

DoSomething( {0,1} );

另外,我以后无法更改该值:

position = v2 {1,1};

可在MSVC中使用,但不适用于Clang: error: expected '(' for function-style cast or type construction

position = (v2) {1,1};

适用于Clang,但不适用于MSVC: error C4576: a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax

有答案的人吗?

泰德·林格莫

不管是否这样v2定义(使用所有公共成员变量):

struct v2 {
    int x, y; 
};

或这样(使用转换构造函数):

class v2 {
public:
    v2(int X, int Y) : x(X), y(Y) {}

private:
     int x, y; 
};

...如果使用C ++ 11或更高版本clang++ -std=c++11 ...),可以像这样使用它

void DoSomething(const v2& v) {
    //... do something ...
}

int main() {
    DoSomething({0, 1});

    v2 position = {1, 2};
    DoSomething(position);
    
    position = {2, 3};
    DoSomething(position);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++:跨平台安全的system(...)的替代方案是什么?

来自分类Dev

C ++:跨平台安全的system(...)的替代方案是什么?

来自分类Dev

C中复合类型的目的是什么?

来自分类Dev

如何在跨平台的C库中处理Unicode路径?

来自分类Dev

为什么C中的复合文字可以修改

来自分类Dev

C ++跨平台编译

来自分类Dev

在C ++中重现“ cold / never_inline”错误处理技术的最佳方法是什么?

来自分类Dev

在c ++中以不同方式处理多个输入命令的正确方法是什么?

来自分类Dev

在 C++ 中引发异常和处理某些异常类型的正确方法是什么

来自分类Dev

C / C ++中的跨平台自定义文件头

来自分类Dev

C ++,OpenCV和“什么”用于跨平台GPU编程

来自分类Dev

C#中的加密是否在Mono中跨平台?

来自分类Dev

预处理的C ++代码中#的含义是什么?

来自分类Dev

C预处理文件中的这些陌生行是什么?

来自分类Dev

在C#中处理异常的最佳实践是什么?

来自分类Dev

C ++-字符串中的跨平台换行符

来自分类Dev

在Clojure(Script)中编写跨平台宏的正确方法是什么?

来自分类Dev

跨平台问题或QtConcurrent :: run的替代方法是什么?

来自分类Dev

跨平台监视程序性能的最佳方法是什么

来自分类Dev

当在C#程序的调用堆栈中找不到处理程序时,正确的方法是什么

来自分类Dev

在C ++中处理难以置信的精确浮点计算时,保持准确性的标准方法是什么?

来自分类Dev

当在C#程序的调用堆栈中未找到任何处理程序时,正确的方法是什么

来自分类Dev

在 C# 中,处理包含受保护嵌套类型的长模板类型名称的好方法是什么?

来自分类Dev

C中的字符串文字类型是什么?

来自分类Dev

使用PowerShell确定处理器体系结构的一种简单的跨平台方法是什么?

来自分类Dev

将平台IP地址添加到NIC的跨平台方法(使用c ++)

来自分类Dev

是否有预处理器宏可跨平台检测C99?

来自分类Dev

是否有预处理器宏可跨平台检测C99?

来自分类Dev

C语言主要方法中参数的目的是什么

Related 相关文章

  1. 1

    C ++:跨平台安全的system(...)的替代方案是什么?

  2. 2

    C ++:跨平台安全的system(...)的替代方案是什么?

  3. 3

    C中复合类型的目的是什么?

  4. 4

    如何在跨平台的C库中处理Unicode路径?

  5. 5

    为什么C中的复合文字可以修改

  6. 6

    C ++跨平台编译

  7. 7

    在C ++中重现“ cold / never_inline”错误处理技术的最佳方法是什么?

  8. 8

    在c ++中以不同方式处理多个输入命令的正确方法是什么?

  9. 9

    在 C++ 中引发异常和处理某些异常类型的正确方法是什么

  10. 10

    C / C ++中的跨平台自定义文件头

  11. 11

    C ++,OpenCV和“什么”用于跨平台GPU编程

  12. 12

    C#中的加密是否在Mono中跨平台?

  13. 13

    预处理的C ++代码中#的含义是什么?

  14. 14

    C预处理文件中的这些陌生行是什么?

  15. 15

    在C#中处理异常的最佳实践是什么?

  16. 16

    C ++-字符串中的跨平台换行符

  17. 17

    在Clojure(Script)中编写跨平台宏的正确方法是什么?

  18. 18

    跨平台问题或QtConcurrent :: run的替代方法是什么?

  19. 19

    跨平台监视程序性能的最佳方法是什么

  20. 20

    当在C#程序的调用堆栈中找不到处理程序时,正确的方法是什么

  21. 21

    在C ++中处理难以置信的精确浮点计算时,保持准确性的标准方法是什么?

  22. 22

    当在C#程序的调用堆栈中未找到任何处理程序时,正确的方法是什么

  23. 23

    在 C# 中,处理包含受保护嵌套类型的长模板类型名称的好方法是什么?

  24. 24

    C中的字符串文字类型是什么?

  25. 25

    使用PowerShell确定处理器体系结构的一种简单的跨平台方法是什么?

  26. 26

    将平台IP地址添加到NIC的跨平台方法(使用c ++)

  27. 27

    是否有预处理器宏可跨平台检测C99?

  28. 28

    是否有预处理器宏可跨平台检测C99?

  29. 29

    C语言主要方法中参数的目的是什么

热门标签

归档