2011-12-14 41 views
6

Trong C++, chúng tôi đã điều sau đây:Khai báo con trỏ const thành 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 

và trong 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 

cú pháp cho constant pointer to int là gì?

Trả lời

5

Tôi nghĩ rằng bạn có thể mô phỏng nó:

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. 
} 
Các vấn đề liên quan