我想知道是否有可能(以及如果,如何)创建一个X值指针
现在,让我说我知道哪些类型可以在这个指针中分配.
例如,一个X值的指针(当然可以随意更改此值的名称),它可以指向string,bool和自定义类的变量
通常你所描述的是一个坏主意.
void*
适用于作品的边际价值.它抛弃了所有类型的安全性,要求您跟踪它.
创建一种根类型的工作,但它不适用于原始类型,而且相当具有侵入性.
A boost::variant< bool*, std::string*, MyClass* >
是一个变量,可以包含指向这3种类型(bool
,std::string
或MyClass
)中任何一种的指针.您可能会发现使用它具有挑战性,因为它强制执行类型安全,并且语法会变得烦人.
类似地,指针boost::variant< bool, std::string, MyClass >
可能是您想要的,但它不会让您指向bool
您不想搞砸的变量.
有了完整的C++ 11支持,union
可以包含任意类型,再加上enum可以让你做一些非常类似的东西boost::variant
.作为一个缺点,这需要你指出的事情union
.无论是否支持完整的C++ 11,指针联合都是合理的.在这两种情况下,您都必须手动跟踪类型并保持同步.
你真正需要考虑的是"我为什么要问这个?",因为和许多问题一样,动机很重要.你可能没有问正确的问题.