2016-07-12 10 views
2

Für den Code unten:Constant Zeigerreferenz

class Foo { 
private: 
    int var; 
    int* var_ptr; 

public: 
    Foo() : var_ptr(&var), var_ptr_ref(var_ptr) {} 
    int*& var_ptr_ref; // Read only access to var and var_ptr 
}; 

Ist es möglich, den Zeiger const und die Ist-Größe konstant zu machen, wenn sie über var_ptr_ref zugegriffen?

Antwort

2

Versuchen erklärt var_ptr als const int und var_ptr_ref als const int * const &:

class Foo { 
private: 
    int var; 
    const int * var_ptr; 

public: 
    Foo() : var_ptr(&var), var_ptr_ref(var_ptr) {} 
    const int * const & var_ptr_ref; 
}; 
+0

Ich erhalte eine Fehlermeldung 'Bindung Referenzelement‚var_ptr_ref‘in ein temporäres variable' für den Konstruktor Linie. – user1135541

+0

@ user1135541 Funktioniert gut für mich. http://ideone.com/PqKXDc –

+0

@ user1135541 Zumindest mein VS2015 ist glücklich, es zu kompilieren. – AlexD