Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;函数定义中参数列表后额外一对括号的含义_C++ - Fatal编程技术网

C++ C++;函数定义中参数列表后额外一对括号的含义

C++ C++;函数定义中参数列表后额外一对括号的含义,c++,C++,在《C++模板-完整指南(第二版)》一书的第2.3节中,作者介绍了以下代码片段: template<typename T> class Stack { ... void printOn() (std::ostream& strm) const { ... } friend std::ostream& operator<< (std::ostream& strm, Stack<T> const& s) {

在《C++模板-完整指南(第二版)》一书的第2.3节中,作者介绍了以下代码片段:

template<typename T>
class Stack {
  ...
  void printOn() (std::ostream& strm) const {
    ...
  }
  friend std::ostream& operator<< (std::ostream& strm, Stack<T> const& s) {
    s.printOn(strm);
    return strm;
  }
};
模板
类堆栈{
...
void printOn()(std::ostream&strm)常量{
...
}

friend std::ostream&operator我假设您从更大的代码块复制粘贴了它(因为它看起来像一个带有额外未声明变量的模板函数)

尽管如此,它看起来仍然不像标准语法。我尝试编译它,但它会产生以下错误:

error: 'printOn' declared as function returning a function
但是,功能不应具有标准中明确规定的返回类型功能:

函数不应具有数组或函数类型的返回类型

但是请注意,当重载
操作符()
时,这种语法可能会出现如下情况:

MyClass operator()(int a, int b, int c) {
     MyClass M;
     M.sum = a + b + c;
     return M;
}

这是一个更大的片段的一部分吗?是的,但我不认为它给这个问题增加了什么重要的东西。因为它可能会,我只是复制了整个片段。这是错误的。它声明了一个不带参数的函数,返回一个函数类型
void(std::ostream&)const
。那条狗不打猎。看。@WhozCraig-quibble,“不会”、“不会”--一定是区域性的问题…谢谢你的回答。正如克里斯指出的,这是一个拼写错误,我在勘误表中没有看到。