在C++中,当你定义一个函数,它接受一个参数,你必须定义变量的数据类型:C++函数的动态数据类型定义
void makeProccess(int request)
不过,我想实现一个函数,它接受不同的数据类型,而不是静态定义的整数类型。
void makeProccess(anyType request)
我该如何设计一个这样的过程,任何想法?
谢谢。
在C++中,当你定义一个函数,它接受一个参数,你必须定义变量的数据类型:C++函数的动态数据类型定义
void makeProccess(int request)
不过,我想实现一个函数,它接受不同的数据类型,而不是静态定义的整数类型。
void makeProccess(anyType request)
我该如何设计一个这样的过程,任何想法?
谢谢。
使用模板:
template <typename T>
void makeProcess(T request) {
// request is of type "T", which can vary
cout << "request: " << request;
}
另外一个好处,就是你可以专注它:
template <>
void makeProcess(string request) {
cout << "This is special handling for a string request: " << request;
}
你要查找C++模板 - 这里有一个很好的链接:http://www.cplusplus.com/doc/tutorial/templates/
拥有你考虑使用tamplates是什么?
template <class T> void makeProcess(T request)
{
// code
}
首先, “使用模板” 答案是非常有用的 - 你应该调查模板 - 这是另一种选择。
如果函数将值传递给最终确切知道“内部”类型的其他代码,则还可以使用boost :: any - 请参阅http://www.boost.org/doc/libs/1_42_0/doc/html/any.html。然而,这可能有点危险,因为你可以很容易地获得以不明显的方式耦合/相互依赖的代码,并且在运行时崩溃而不是无法编译(这是模板会发生的情况)。但是,对于非专业C++编码人员而言,它可能比大量的模板编码更容易理解。
(请注意,boost :: any也需要该类型是可复制和可赋值的。)
谢谢,是的,这是解决方案。我正在检查... – isa 2010-05-01 13:05:21