C++ 有没有办法在C++;不使用模板也不使用空指针?
我想知道,我们是否可以实现一个函数,该函数的实例可以在运行时为不同的数据类型创建,但不允许使用模板或空指针C++ 有没有办法在C++;不使用模板也不使用空指针?,c++,function,generics,C++,Function,Generics,我想知道,我们是否可以实现一个函数,该函数的实例可以在运行时为不同的数据类型创建,但不允许使用模板或空指针 感谢您的帮助。如评论中所述,您可以使用std::Any类型(自C++17以来)来“实现通用函数”(如您的问题的标题所述) 但是,这不允许“在运行时为不同数据类型创建实例的函数”(如问题的正文中所述)–它将只是一个可以(有条件地)处理不同参数类型的函数 下面是一个简短的例子: #包括 #包括 #包括 #包括 #包括 #包括 void MultiFunc(标准::任意参数) { std::co
感谢您的帮助。如评论中所述,您可以使用
std::Any
类型(自C++17以来)来“实现通用函数”(如您的问题的标题所述)
但是,这不允许“在运行时为不同数据类型创建实例的函数”(如问题的正文中所述)–它将只是一个可以(有条件地)处理不同参数类型的函数
下面是一个简短的例子:
#包括
#包括
#包括
#包括
#包括
#包括
void MultiFunc(标准::任意参数)
{
std::cout是,使用宏
#define instantiate_generic_function(Type) \
void myGenericFunction(Type param) { \
std::cout << param; \
}
这将生成一系列名为myGenericFunction
另一个选项提醒我还有类似宏的函数,它们有不同的优点和缺点
#define myGenericFunction(var) do { \
std::cout << (var);
} while (false)
简短回答:不。你要求做的事情没有工具明确提供的相同目的。描述你的实际问题将是有益的。此外,模板本身不允许你在运行时为不同类型创建函数std::any
来替换void*
。甚至函数宏#define print(var)也不允许{std::cout
#define myGenericFunction(var) do { \
std::cout << (var);
} while (false)
if (thing == true)
myGenericFunction(var);