说我已经定义了类中的变量
const char* info;
bool machine::ping(){
if(info[0] == '\0' ){
printf("%s", "null");
}
else{
printf("%s",info); <---------- This does NOT print out what I expect. :(
}
}
bool machine::RecvNotify(const Data& aData){
info = aData.path();
printf("%s",info); <------- This works well and prints out what I expect
}
我想我不能用这种方式定义这个变量。如果有什么我应该改变,请告诉我。感谢
答案 0 :(得分:1)
变量很好,但aData.path可能只返回一个临时字符串,具体取决于实现。
如果您将const char* info
更改为std::string
会怎样?
答案 1 :(得分:0)
有两件事。
首先,&#34; machine :: RecvNotify()&#34;应该在&#34; machine :: ping()&#34; 之前调用。这是为了给&#34; info&#34;一个指向的地址。
其次,在&#34; machine :: RecvNotify()&#34;中,是&#34; aData&#34;当你调用&#34; machine :: ping()&#34;时仍然在范围。如果没有,&#34; info&#34;当你打电话给#34; machine :: ping()&#34;时会有无效的地址指向。这可能会导致您的意外输出&#34;。
如果您希望能够拥有&#34; aData.path()&#34;的值。即使它不在范围内,您也可以复制其值。 如建议的那样,您可以将值复制到std :: string成员变量。