string是标准库中的复杂对象,并不是C++内建数据类型。所以不支持那种大括号内跟一个字符串的初始化赋值方式。
解决办法是使用结构体的构造函数。
struct test
{
test(const char* s): str(s){}
string str;
};
int main()
{
test test1("strtest");
return 0;
}
应该是这样:
test test1;
test1.str={"strtest"};
因为结构体里不一定有多少变量,所以不能给结构体赋值,只能给结构体里的变量赋值,就算只有一个变量也是如此
结构体 可以理解为 类
里面的string str 相当于一个成员变量
想想你的类里的public的成员变量怎么赋值的?
所以应该是
test test1;
test1.strtest="....";
不能用malloc去给你的结构体申请空间,假如使用指针的话,因为malloc对string类没有对其初始化的能力,所以申请string类对象失败,你赋值的时候肯定也是失败的。但是用new来申请结构体空间的话,就可以赋值成功的。
没有错的,你可能其他地方错了