0

我创建了一个简单的类来传递给 Juce 数组的排序方法 http://www.rawmaterialsoftware.com/api/classArray.html#ac1dca4ab2895315dd85e25eaca2fcab1

它看起来像这样:

class XComparison
{
public:
    static int compareElements (StraightPath first, StraightPath second)
    {
        return (int) (first.xOrigin - second.xOrigin);
    }
};

当我创建一个传递给比较器的实例时,这两个工作:

XComparison x;
XComparison x = XComparison();

但这给了我一个编译器错误:

XComparison x();

http://juce.git.sourceforge.net/git/gitweb.cgi?p=juce/juce;a=blob的第 74、101、119 行上的“'.compareElements' 的左侧必须有类/结构/联合” ;f=modules/juce_core/containers/juce_ElementComparator.h;h=f976c40c7741b3df30d10e699c282a3569a49e3c;hb=HEAD#l74

为什么隐式分配在这里不起作用?

谢谢!

4

2 回答 2

4

X比较 x(); 被解析为 x 的函数声明,它不接受任何参数并返回 XComparison。

http://yosefk.com/c++fqa/ctors.html#fqa-10.19

于 2012-04-26T23:04:40.393 回答
1

您正在声明一个函数而不是一个表达式,这就是您收到错误的原因。

XComparison x; // default construction, unitialised
XComparison x = XComparison(); // construct x from default constructor
XComparison x(); // all you are doing is declaring a function x that returns XComparison

请参阅此C++ 常见问题解答

于 2012-04-26T23:03:51.843 回答