返回对 slice_array 的引用

Posted

技术标签:

【中文标题】返回对 slice_array 的引用【英文标题】:Returning reference to slice_array 【发布时间】:2016-01-27 04:44:58 【问题描述】:

我目前正在尝试围绕 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

这两个任务不是一回事吗?

【问题讨论】:

【参考方案1】:

我自己解决了: 似乎 valarray[slice(int, int, int)] 不是左值或者是临时的,因此不允许使用这样的对象初始化引用(奇怪的是,VS2012 在某些情况下允许这样做)。

【讨论】:

以上是关于返回对 slice_array 的引用的主要内容,如果未能解决你的问题,请参考以下文章

返回引用类型的返回引用的好处

返回对模板向量的引用

返回对成员变量数据的引用的开销

PHP:返回对数组元素的引用

为啥返回 Java 对象引用比返回原语慢得多

如何比较 C++ slice_array?为啥不能将其与 valarray 进行比较?