【发布时间】:2010-10-02 06:07:57
【问题描述】:
为什么不能引用 void?我在 C++ 标准中找到的唯一内容是这一行,位于 8.3.2.1
指定类型“对 cv void 的引用”的声明符格式不正确。
为什么会这样?为什么我不能编写一个接受void& 的“通用”函数?
为了清楚起见,我没有想到使用引用到 void 可能比使用模板更好的有用应用程序,但我只是对禁止这种构造的理由感到好奇。
为了澄清一点,我知道“按原样”使用指向 void 的引用与取消引用指向 void 的指针一样毫无意义。但是,我可以将它转换为对-sometype 的引用以便使用它,不是吗?其实我不明白为什么下面的sn-p可以工作...
void foo(void *data)
{
int *i = reinterpret_cast<int*>(data);
// do something with i
}
...虽然这个不能:
void foo(void &data)
{
int &i = reinterpret_cast<int&>(data);
// do something with i
}
【问题讨论】:
标签: c++ reference void-pointers