什么是void init中的<object>(Handle <object> exports)</object> </object>

时间:2013-05-15 16:39:44

标签: c++

我正在查看node.js文档来制作模块。 http://nodejs.org/api/addons.html

我理解模板函数和模板类,例如

template <class T>
void MyTemplateFunction(T a) 
{
    a.doSomething();
}

...

MyObj mo;
MyTemplateFunction <MyObj>(mo);

这段代码看起来有点像模板,但我以前从来没有这样做过:

void init(Handle<Object> exports) {
    // what is <Object>?
}

3 个答案:

答案 0 :(得分:3)

据推测,Handle是一个具有单一类型参数的类模板:

template <typename T> class Handle;

并且可能Object是一种类型。

使用Handle作为模板参数,实例化Object类模板,以提供类;正如您的示例使用MyTemplateFunction作为模板参数来实例化MyObj函数模板一样,以提供函数。

答案 1 :(得分:2)

Handle<Object>template class的规范(与您在上面显示的template function相对)。有一个

的声明
template <class T>
class Handle {
    ...
};

代码中的某个位置或您包含的某个头文件中的某个位置。从本质上讲,Handle<Object>是使用Handle模板生成的类,在整个模板代码中将T替换为Object

答案 2 :(得分:1)

这基本上是一回事: exports被声明为Handle<Object>类型,Handle是一个类模板,它接受一个(最有可能)类型的参数。它可能被宣布类似于以下内容:

template<typename T>
class Handle{...};