如何将“string *”转换为“const string&”在C ++中?

时间:2009-06-17 22:04:08

标签: c++ pointers reference const

例如,如果我有以下内容:

void foo(string* s)
{
    bar(s); // this line fails to compile, invalid init. error
}

void bar(const string& cs)
{
    // stuff happens here
}

我需要进行哪些转换才能让电话成功?

3 个答案:

答案 0 :(得分:12)

将其更改为:

bar(*s);

答案 1 :(得分:4)

void foo(string* s)
{
    bar(*s);
}

s指向一个字符串,而bar需要一个(引用一个)字符串,因此您需要bar指向s指向的内容。你拼写“s指向的内容”的方式是*s

答案 2 :(得分:2)

将指针转换为引用时,务必确保不要尝试转换NULL指针。编译器必须允许您进行转换(因为通常它无法判断它是否是有效的引用)。

void foo(string* s)
{
    if(0 != s){
      bar(*s);
    }
}

*运算符与&运算符相反。运营商。要将参考转换为指针,请使用& (地址)。要将指针转换为引用,请使用*(内容)。