2

私はこのようなファンクターを持っています、

class PrintParentheses
{
public:
    PrintParentheses(unsigned pairsCount)
    {}

    void operator ()() {}
};

内部main()で私はそれを次のように使用しています、

#include <iostream>

int main()
{
  unsigned pairsCount = 0;

  // Error:  ‘PrintParentheses pairsCount()’ redeclared as different kind of symbol
  PrintParentheses(pairsCount)();

  PrintParentheses(5)(); // But this works

}

エラー位置は、コード自体の内部にマークされています。との両方をテストGCC-4.6しましclang-3.1た。どちらも同じエラーを出している。

4

1 に答える 1

8

これは、pairsCountが引数をとらず、PrintParenthesesを返す関数として読み取られています。最も厄介な解析として知られているため、これは関数宣言として扱う必要があります。代わりに、オブジェクトを作成して使用します。

PrintParentheses obj(pairsCount);
obj();
于 2012-10-08T05:57:09.433 に答える