Pub*_*bby 1 c++ static pointers const reference
我想别名一个void*变量,所以我可以用另一个名字.这意味着我可以将指针(p)设置为某个东西,并且别名变量(pp)也将设置为相同的地址.
例如:
class foo {
private:
static void* p; //I just happen to need this for static variable
static const void*& pp;
};
//in cpp:
const void*& foo::pp = foo::p;
Run Code Online (Sandbox Code Playgroud)
海湾合作委员会抱怨:
错误:从'void*'类型的表达式初始化'const void*&'类型的引用无效
你想要做的是,即设置一个const void*并指向void*看起来它应该是合法且无害的,但它不是,并且它有正当理由是非法的.请记住,引用只是它引用的内容的别名.
说我们可以这样做:
const void* & foo::pp = foo::p; //非法,因为我们会看到它会导致什么
现在假设我有这个:
const char *x = "Hello world";
由于foo :: pp是指向const的指针,因此我可以将其指向x:
foo::pp = x; //合法,因为我可以将const void*指向const内存
但是p现在也指向x,因为pp是对p的引用.
所以现在我可以这样做:
memset( foo::p, 8, 'X' );
这当然应该是非法的,因为我试图修改x是const.
这就是为什么你不想做的事情.
void * const& foo::pp = p; 会被允许的
| 归档时间: |
|
| 查看次数: |
5183 次 |
| 最近记录: |