在C ++中,当你定义一个接受一个参数的函数时,你必须定义该变量的数据类型:
void makeProccess(int request)
但是,我想实现一个采用不同数据类型的函数,而不是采用静态定义的整数类型。
void makeProccess(anyType request)
我如何设计这样的过程,任何想法?
感谢。
答案 0 :(得分:3)
使用模板:
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;
}
答案 1 :(得分:1)
您需要查找C ++模板 - 这是一个很好的链接:http://www.cplusplus.com/doc/tutorial/templates/
答案 2 :(得分:1)
您是否考虑过使用模板?
template <class T> void makeProcess(T request)
{
// code
}
答案 3 :(得分:0)
首先,“使用模板”答案非常有用 - 您应该调查模板 - 这是另一种选择。
如果函数将值传递给其他最终确切知道“内部”类型的代码,您还可以使用boost :: any - 请参阅http://www.boost.org/doc/libs/1_42_0/doc/html/any.html。但是,这可能有点危险,因为您可以轻松地获取以不明显的方式耦合/相互依赖的代码,并且在运行时崩溃而不是无法编译(这是模板会发生的情况)。但是,非专业C ++编码器比大量模板代码更容易理解。
(请注意,boost :: any还要求该类型是可复制和可分配的。)