#include <iostream>
using namespace std;
void fn(const void *l) {
// How to print the value of l. The below line is giving error
cout << "***" << *l;
}
int main() {
cout << "Hello World!";
int d = 5;
fn((char *) &d);
return 0;
}
错误:
在函数'void fn(const void *)'中: 第8行:错误:'const void *'不是指向对象的指针类型 由于-Wfatal-errors而导致编译终止。
尝试施法如下图所示。它没有帮助。请提供建议。
#include <iostream>
using namespace std;
void fn(const void *l) {
// How to print the value of l. The below line is giving error
int *pInt = static_cast<char*>(l);
cout << *pInt;
}
int main() {
cout << "Hello World!";
int d = 5;
fn((char *) &d);
return 0;
}
在函数'void fn(const void *)'中: 第9行:错误:从'const void *'类型的static_cast到'char *'类型转换为constness 由于-Wfatal-errors
,编译终止答案 0 :(得分:6)
您想要显示指针本身的值,还是它所指向的值?在第一种情况下,简单
cout << p;
就足够了。如果你想实现第二件事 - 它是不可能的 - 指针指向 void ,并且它不能被解除引用,因为编译器不知道它背后隐藏的值的类型。
答案 1 :(得分:5)
你做不到。除非您将void
指针解释为某种东西。
把自己放在功能的鞋子里:我给你一个指向“某事”的指针。你不知道那是什么东西。我告诉你打印那个东西。你做什么的?
答案 2 :(得分:1)
在取消引用void指针时,标准需要显式转换。
不仅编译器本身而且标准也不允许这样做。
答案 3 :(得分:-6)
cout << "***" << *(int*)l ;