假设我有这种类型:
struct T
{
SomeType a;
OtherType b;
};
我认为有一种方法可以声明T
类型的对象并定义a
和b
的初始化值,但我不记得这是如何工作的,甚至它叫什么,所以我可以查找它。类似T t(a, b)
的内容a
和b
分别属于SomeType
和OtherType
类型。
如何在不声明构造函数的情况下实现此目的,以及它的名称是什么?
答案 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;
}