【发布时间】:2011-02-06 03:42:28
【问题描述】:
我想给一个 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;
GCC 抱怨:
错误:初始化无效 'const void*&' 类型的引用来自 'void*' 类型的表达式
【问题讨论】:
-
您的声明与您的定义不符:前者是
const void*&类型(引用指向 const void 的指针),而后者是类型const void*& const(对指向 const void 的指针的常量引用),两者都不兼容“指向无效的指针”。 -
Adam Rosenfield:哎呀,那是打字错误。实际代码是 'const void*&' 并且仍然是错误的。
-
你能有一个静态成员作为引用吗?另外,我建议您重新考虑一下为什么首先需要使用 void 指针。这通常表明设计不佳。
-
@Dima:我的其他静态引用工作正常。空指针实际上是做我正在做的事情的最佳方式。
-
您修改了您的问题,然后降低了回答您最初发布内容的人的评分?
标签: c++ pointers static reference constants