我有一个类,在那里我有一个包含字符串的结构。在 main 中,我声明了该类,然后创建一个结构来访问该字符串。它的样子:
Class *myClass = new Class;
Class::Struct *myStruct;
myStruct = &myClass->getStruct(); // the struct is in a vector so I get it through a function
cout << myStruct->string << "\n";
因此,使用这种方法我无法访问结构中的字符串,但我可以访问 int、float 等。如果我将代码更改为:
Class::Struct myStruct;
myStruct = myClass->getStruct();
cout << myStruct.string << "\n";
然后它工作。
我的问题是,为什么第二个有效,而第一个无效,为什么只有字符串?这与生死无关,因为我真的不需要那个字符串,我只是测试了程序,但我真的很好奇发生了什么,因为我还在学习语言,尤其是指针。
提前致谢!
编辑:好的,所以定义
class Class {
public:
struct Struct {
string name;
float data;
};
Class();
Struct getStruct( int i );
private:
vector<Struct> tempStruct;
};
Class::Class() {
Struct str;
str.name = "test";
str.data = 1.0f;
tempStruct.push_back( str );
}
struct Class::getStruct( int i ) {
return tempStruct[i];
}
EDIT2: 这是一个小错误,但我忘记了 &。但是你帮我找到了。