C ++函数动态数据类型定义

时间:2010-05-01 12:54:35

标签: c++ types

在C ++中,当你定义一个接受一个参数的函数时,你必须定义该变量的数据类型:

void makeProccess(int request)

但是,我想实现一个采用不同数据类型的函数,而不是采用静态定义的整数类型。

void makeProccess(anyType request)

我如何设计这样的过程,任何想法?

感谢。

4 个答案:

答案 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还要求该类型是可复制和可分配的。)