static_cast 从 'const char *' 到 'void *' 是不允许的
static_cast from 'const char *' to 'void *' is not allowed
在 C++ 中,我试图打印 C 字符串的地址,但我的转换似乎有问题。我从一本书中复制了代码,但它无法在我的 mac.
上编译
const char *const word = "hello";
cout << word << endl; // Prints "hello"
cout << static_cast< void * >(word) << endl; // Prints address of word
您正试图丢弃"constness":word
指向常量数据,但static_cast<void*>
的结果不是指向常量数据的指针。 static_cast
不会让你那样做的。
您应该改用 static_cast<const void*>
。
有演示
#include <iostream>
int main() {
void* Name1;
Name1 = static_cast<void*>(new std::string("Client 1"));
void* Name2;
std::string str1 = "Client 2";
Name2 = &str1;
return 0;
}
在 C++ 中,我试图打印 C 字符串的地址,但我的转换似乎有问题。我从一本书中复制了代码,但它无法在我的 mac.
上编译const char *const word = "hello";
cout << word << endl; // Prints "hello"
cout << static_cast< void * >(word) << endl; // Prints address of word
您正试图丢弃"constness":word
指向常量数据,但static_cast<void*>
的结果不是指向常量数据的指针。 static_cast
不会让你那样做的。
您应该改用 static_cast<const void*>
。
有演示
#include <iostream>
int main() {
void* Name1;
Name1 = static_cast<void*>(new std::string("Client 1"));
void* Name2;
std::string str1 = "Client 2";
Name2 = &str1;
return 0;
}