-1

現在、valarray オブジェクトの周りにクラスを実装しようとしていますが、実行しようとすると例外が発生します。

class TestClass
{
    public:
    valarray<int> va;
    TestClass() { va.resize(5, 1); }
    slice_array<int>& get_slice()
    {
        return va[slice(0, 3, 2)];
    }
};

//In main():

TestClass obj;

slice_array<int>& ref = obj.va[slice(0,3,2)];

ref = -1;               //OK
obj.get_slice() = -1;   //Throws exception

2 つの割り当ては同じものではありませんか?

4

1 に答える 1

0

私はそれを自分で解決しました: valarray[slice(int, int, int)] は左辺値ではないか、一時的であるように思われるため、そのようなオブジェクトで参照を初期化することは許可されていません (奇妙なことに、VS2012 ではある場合)。

于 2016-01-29T04:24:36.357 に答える