如何在不提供构造函数的情况下创建和初始化简单的结构?

时间:2014-05-22 11:54:58

标签: c++ c++11

假设我有这种类型:

struct T
{
  SomeType a;
  OtherType b;
};

我认为有一种方法可以声明T类型的对象并定义ab的初始化值,但我不记得这是如何工作的,甚至它叫什么,所以我可以查找它。类似T t(a, b)的内容ab分别属于SomeTypeOtherType类型。

如何在不声明构造函数的情况下实现此目的,以及它的名称是什么?

3 个答案:

答案 0 :(得分:4)

你可以写T t = {a, b}。这只适用于 PODs aggregates(当然还有一个propper构造函数)。

答案 1 :(得分:3)

您使用c ++ 11标记,所以非常简单:

#include <iostream>

struct T
{   
    int a;
    float b;
};  


int main()
{   
    T t{1,2.2};

    std::cout << t.a << ":" << t.b << std::endl;

}   

答案 2 :(得分:0)

C ++ 11使用&#34; {}&#34;支持统一的inicializatoin列表,这意味着您可以初始化。带有&#34; {}&#34;的课程作为结构之前 你可以像这样初始化结构

T t{someTypeA, otherTypeB};// someTypeA and someTypeB must be defined

这是一个简单的测试代码

#include <iostream>
using namespace std;

class B
{
public:
    int a;
};

class C
{
public:
    int a;
};

struct A
{
    B b;
    C c;
};

int main(int argc, char** argv) 
{ 
    B b;
    C c;
    b.a = 1;
    c.a = 2;
    A a{b, c};
    cout << a.b.a << a.c.a << endl;
    return 0; 
}