C ++模板类原型,函数定义

时间:2012-01-06 13:47:27

标签: c++ class templates

我想编写一个创建“Vector”(模板)的函数,在其中存储几个值,然后返回该向量。我正在定义“main”下面的函数,所以我正在使用原型:

Vector<double> VectorMouseClick;

这是正确的原型吗?

在“主要”之后,我正在定义这个功能,我试图这样做但不确定这是否是正确的方法:

Vector<double> VectorMouseClick()
{
    Vector<double> vector();
     ...some code manipulating values and storing them in "vector"...
    return vector;
}

如果函数返回我指定的类(又名Vector),我该如何编写原型?既然它是模板类,我会像上面那样做:     矢量VectorMouseClick; 或者是:     矢量VectorMouseClick; (就像其他原型一样(int ReturnValues,void SomeFunct等)

什么时候我可以在原型上使用“void”?这仅适用于不“返回”值的函数吗?我在这里看了解答案,但由于我是C ++的新手,其中一些有点难以理解。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

  

这是正确的原型吗?

不,你需要括号来表明它是一个函数(空,因为函数没有参数):

Vector<double> VectorMouseClick();

如果没有括号,则表示变量,而不是函数。

  

如果函数返回我指定的类(又名Vector),我该如何编写原型?

一般来说,函数声明总是return_type function_name(arguments);(可能还有一些额外的部分)。类是一个类型,因此只需将其名称作为返回类型。类模板不是类(或类型),因此您需要提供模板参数以使其成为类。

  

什么时候我可以在原型上使用“void”?这仅适用于不“返回”值的函数吗?

这是完全正确的。 void用于你必须提供类型的地方,但没有任何类型可以提供;在函数返回类型的情况下,它表示没有返回任何内容。

答案 1 :(得分:1)

不,不是。一般来说:

T t; 

声明一个名为t的类型为T的变量。

T t();
T t(void);

与声明一个不带参数的函数,返回T并命名为t。

的方法相同

使用一个或另一个只是一个样式问题,因为在C中,空白是必要的,而在C ++中则不是。如果不返回任何值,则函数的返回类型为void