C++和C非成员多重结构初始化

问题描述:

如何用相同的数据初始化两个或多个结构?这必须在编译时作为非成员全局变量的const结构的默认数据。编辑: 那么C呢?C++和C非成员多重结构初始化

+0

都是结构相同的布局明智? – StoryTeller

+0

'a = b = c = d = {...}'? – DevSolar

+0

是的,结构是相同的类型。 –

一种方法是:

#define DATA { bla,bla,bla,bla } 

var a = DATA; 
var b = DATA; 

工作对我来说:

// header 
struct Foo { 
     int a; 
     int b;        
}; 
extern Foo const x; 
extern Foo const y; 

// cpp file 
Foo const x{2, 3}; 
Foo const y = x; 

编辑:重新诠释的问题一点点。

您可以使用复制构造函数来初始化结构。 (这需要使用一个辅助函数来确保初始化的正确顺序。)如果结构POD,这应该是定期的编译时初始化为有效:

struct A { 
    int a; 
    double c; 
}; 

A initial_data() { 
    return { 1, 2.0 }; 
} 

A a = initial_data(); 
A b = initial_data();