我們如何初始化類的構造函數中的結構體指針。 例子:在類構造函數中初始化結構體
struct my_struct{
int i;
char* name;
};
class my_class{
my_struct* s1;
my_class() {
// here i want to make s1->i = 10; and s1->name = "anyname" ;
// should i assign it like s1->i= 10; and call new for s1->name and strcpy(s1->name "anyname");
// it compiles in g++ without any warning/error but gives seg fault at run time
}
};
至少你已經考慮過'name'的存儲空間了 - 這裏的一些其他答案還沒有... – Nim
代碼是錯誤的。如果's-> name'的類型爲'char *',用行s1-> name =「anyname」賦值;'是做錯的方法,之後我懷疑執行會繼續沒有在'free(s1-> name)'這一行崩潰;'。正確的做法是使用'strpcy'或其一個變體。 – paercebal
很可能這應該是's1-> name = strdup(...);'。 – hochl