我从" C ++ Primer",第5版学习C ++。
在第4章,练习4.37要求如下:
重写以下每个旧式转换以使用命名转换:
int i; double d; const string *ps; char *pc; void *pv; (a) pv = (void*)ps; (b) i = int(*pc); (c) pv = &d; (d) pc = (char*) pv;
这是我的解决方案:
#include <string>
using std::string;
int main()
{
char c = 'a'; string s = "Hello";
int i = 2; double d = 2.24;
const string *ps = &s; char *pc = &c; void *pv = nullptr;
pv = const_cast<string*>(ps); // remove constness
i = static_cast<int>(*pc); // convert char to int
pv = &d; // assign the address of variable d to the void pointer
pc = static_cast<char*>(pv); // convert void pointer to char pointer
// and assign it to pc pointer
return 0;
}
由于练习的答案不可用,你能否告诉我上述解决方案是否正确?