结构体中有string类型,如何初始化?

#include<iostream>
#include <string>
using namespace std;
struct A
{
string str;
int i;
short j;
};
void main()
{
A aa={"",0,0};
}

error C2552: 'aa' : non-aggregates cannot be initialized with initializer list

错误是什么原因?

因为 string str; 的size大小未知,不能这样初始化
只有struct的size已知的情况下才能这样初始化或者赋值
string的定义typedef basic_string<char> string;

aa.str="abc";
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-01-03
#include<iostream>
#include <string>
using namespace std;
struct A
{
A(){str = "str";i=0;j=0;}
string str;
int i;
short j;
};
void main()
{
A aa;
cout<<aa.str<<endl;
}
我的理解:
string 也是类,是模板类。不是内置类型的结构体成员不能用初始化列表来赋值。
第2个回答  2015-09-29
#include<iostream>
#include <string>
using namespace std;
struct A
{
A(){str = "str";i=0;j=0;}
string str;
int i;
short j;
};
void main()
{
A aa;
cout<<aa.str<<endl;
}
我的理解:
string 也是类,是模板类。不是内置类型的结构体成员不能用初始化列表来赋值。

结构体中有string类型,如何初始化?
因为 string str; 的size大小未知,不能这样初始化 只有struct的size已知的情况下才能这样初始化或者赋值 string的定义typedef basic_string<char> string;aa.str="abc";

带有string类型的结构体数组怎么初始化
string str;的size大小未知,不能这样初始化 只有struct的size已知的情况下才能这样初始化或者赋值 string的定义typedef basic_string string;aa.str="abc";

C++ 结构体如何初始化
1 使用构造函数。在C++中,struct可以当做类(class)来使用,同样支持成员函数,构造函数,析构函数。所以可以写对应的构造函数,实现自由初始化。2 定义时,按照成员变量位置,写初始化列表。如struct test中有成员int a, char b, 和float c,那么初始化一个变量可以写作 struct test t1 = {100, '...

QString&std::string 转换和初始化小结
解决段错误的方法是,使用 char * 类型替代 QString 或 std::string 类型。使用 memset 初始化 char * 变量时,不会引发错误。然而,如果倾向于使用 QString 或 std::string 的便利性进行字符串处理,而不想使用 memset 进行初始化,可以对结构体进行调整。通过在初始化列表中对成员进行初始化,可以...

C++中结构体数组的初始化问题
第一个问题,不能这样初始化,需要 inflatable a={0};集合中至少需要1个元素方可作为初始化列表,专业会将name、volume、price的所有字节全部初始化为0。第二个问题,如果结构体包含有string a;那么就不能使用初始化列表初始化了。也就是说 inflatable a={0}会编译不成功,因为string类有构造函数,...

结构体中包含结构体数组 怎么初始化
int nChildData;string strChildData;T_ChildStruct(){ nChildData = 0;strChildData = ""; \/\/ string可以不用写初始化,本身构造中就有 } };struct T_FatherStruct { int nFatherData;string strFatherData;T_ChildStruct arrChild[10];T_FatherStruct(){ nFatherData = 0;strFatherData...

结构体数组怎么初始化
\/\/ 有两种方法可以初始化结构体数组,如下例所示:include <iostream> include <string> include <iomanip> include <memory> using namespace std;\/\/ custom_type typedef struct tagStudent { int Id;string Name;}Student;int main(){ \/\/ 设置左对齐 cout.flags(ios::left);\/\/ 方式1: ...

C语言结构体指针中的const成员怎么初始化?
可以先定义一个初始化的函数,并保证在别的地方不再调用这个函数,倒也可以行,代码如下:#include <stdio.h#include <malloc.htypedef struct{int* const p;} C;int main(){int i = 0;C* c = (C*)malloc(sizeof(C));printf("Old: 0x%08X\\n", c-p);

C++中链表初始化
结构体中 typedef struct Cwow{string name;string sex;string profession;struct Cwow * next;}Cwow;string是C++的东西。而这里 p1=p2=(Cwow *)malloc(sizeof(Cwow));malloc是纯c的东西,如此混用当然出异常,请改为new:p1=p2=new Cwow;这样就好了,所有用malloc的地方都该为new ...

结构体里面带结构体的变量怎么初始化
…};struct结构体标识符 变量名={初始化值1,初始化值2,…, 初始化值n };例如,定义struct Point类型变量,并初始化的语句如下:struct Point oP1={0.0,0.2,0.3};struct Point类型变量oP1的三个成员变量的值分别为 oP1.x=0.0,oP1.y=0.2 oP1.z=0.3 由于定义结构体变量有三种方法...

相似回答