2009-06-17 3 views

Antwort

12

Ändern Sie es an:

bar(*s); 
+0

Wie würde ich es anders machen? Const String & in String * umwandeln? – Petr

+1

@Petr: Dein Risiko, die 'const'-Eigenschaft wegzuwerfen, aber wenn du weißt, was du tust,' const_cast (& s) ' –

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

s zeigt auf einen String, und bar erfordert eine (Verweis auf eine) Zeichenfolge, so dass Sie bar welchen s Punkte geben müssen. Die Art und Weise, wie Sie "was s zeigt auf" lautet, lautet *s.

2

Wenn Sie einen Zeiger auf eine Referenz konvertieren, müssen Sie sicherstellen, dass Sie nicht versuchen, einen NULL-Zeiger zu konvertieren. Der Compiler muss Ihnen erlauben, die Konvertierung durchzuführen (weil es im Allgemeinen nicht sagen kann, ob es sich um eine gültige Referenz handelt).

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

Der * Operator das Inverse des & Operators. Um von einer Referenz auf einen Zeiger zu konvertieren, verwenden Sie & (Adresse von). Um einen Zeiger in eine Referenz umzuwandeln, verwenden Sie * (Inhalt von).