是否有可能指向任何类型的变量?

P.K*_*.K. 0 c++ pointers

我想知道是否有可能(以及如果,如何)创建一个X值指针
现在,让我说我知道哪些类型可以在这个指针中分配.

例如,一个X值的指针(当然可以随意更改此值的名称),它可以指向string,bool和自定义类的变量

Yak*_*ont 8

通常你所描述的是一个坏主意.

void*适用于作品的边际价值.它抛弃了所有类型的安全性,要求您跟踪它.

创建一种根类型的工作,但它不适用于原始类型,而且相当具有侵入性.

A boost::variant< bool*, std::string*, MyClass* >是一个变量,可以包含指向这3种类型(bool,std::stringMyClass)中任何一种的指针.您可能会发现使用它具有挑战性,因为它强制执行类型安全,并且语法会变得烦人.

类似地,指针boost::variant< bool, std::string, MyClass >可能是您想要的,但它不会让您指向bool您不想搞砸的变量.

有了完整的C++ 11支持,union可以包含任意类型,再加上enum可以让你做一些非常类似的东西boost::variant.作为一个缺点,这需要你指出的事情union.无论是否支持完整的C++ 11,指针联合都是合理的.在这两种情况下,您都必须手动跟踪类型并保持同步.

你真正需要考虑的是"我为什么要问这个?",因为和许多问题一样,动机很重要.你可能没有问正确的问题.

  • @PK不,这不是最容易的.在其他情况下,大部分烦恼都是通过实际管理来预先管理类型安全问题的成本!`void*`解决方案是前端负载最少的解决方案,但是最容易出错的问题. (2认同)