2011-12-14 14 views
6

In C++ abbiamo la seguente:Dichiarare il puntatore const su int?

int* p1;    // pointer to int 
const int* p2;  // pointer to constant int 
int* const p3;  // constant pointer to int 
const int* const p4; // constant pointer to constant int 

e in D:

int* p1;    // pointer to int 
const(int)* p2;  // pointer to constant int 
?? ?? ??    // constant pointer to int 
const(int*) p4;  // constant pointer to constant int 

qual è la sintassi per constant pointer to int?

risposta

5

Penso che si può simulare:

struct Ptr(T) 
{ 
    T* _val; 

    this(T* nval) const 
    { 
     _val = nval; 
    } 

    @property T* opCall() const 
    { 
     return cast(T*)_val; 
    } 

    alias opCall this; 
} 

void main() 
{ 
    int x = 1; 
    int y = 2; 
    const Ptr!int ptrInt = &x; 
    assert(*ptrInt == 1); 

    *ptrInt = y; // ok 
    assert(*ptrInt == 2); 
    assert(x == 2); 

    ptrInt = &y; // won't compile, good. 
} 
Problemi correlati