0

Juce Array http://www.rawmaterialsoftware.com/api/classArray.html#ac1dca4ab2895315dd85e25eaca2fcab1の sort メソッドに渡す単純なクラスを作成しました

次のようになります。

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

this のインスタンスを作成してコンパレータに渡すと、次の 2 つが機能します。

XComparison x;
XComparison x = XComparison();

しかし、これは私にコンパイラエラーを与えます:

XComparison x();

http://juce.git.sourceforge.net/git/gitweb.cgi?p=juce/juce;a=blobの 74、101、119 行目の「'.compareElements' の左側には class/struct/union が必要です」 ;f=modules/juce_core/containers/juce_ElementComparator.h;h=f976c40c7741b3df30d10e699c282a3569a49e3c;hb=HEAD#l74

ここで暗黙の割り当てが機能しないのはなぜですか?

ありがとう!

4

2 に答える 2

4

XComparison x(); 引数を取らず、XComparison を返す x の関数宣言として解析されます。

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++ FAQ を参照してください

于 2012-04-26T23:03:51.843 に答える