数组嵌套的代理



我已经创建了一个数组,我的问题是在操作员方括号中" []"。共享该数组以减少每次复制,因此,当需要进行写入操作时,必须在数组之前进行私人副本。使用操作员" []"时,无法知道条目上的操作是否是读取或写入操作。为此,使用代理,而不是返回对条目的引用,而是使用对数组对象的引用和数组中的必需条目创建代理。

运算符的代码" []":

inline typename BasicTypesArray< T >::BasicTypesArrayProxy BasicTypesArray< T >::operator[]( UnsignedInteger64bits entryIndex )
{
    return ( BasicTypesArrayProxy( *this, entryIndex ) );
}

代理构造函数的代码:

    inline BasicTypesArray< T >::BasicTypesArrayProxy::BasicTypesArrayProxy( BasicTypesArray< T >& basicTypesArray, UnsignedInteger64bits entryIndex ) :
    m_basicTypesArrayObject( basicTypesArray ),
    m_entryIndex( entryIndex )
    {}

问题是,使用G 编译此问题时,我会收到以下错误:

在basictypesarraytest.cpp中包含的文件中:4:0:宇宙:: unsignedInteger64bits =长unsigned int]’:

basictypesarraytest.cpp:31:13:从这里需要../utilities/generalpurposecontainers/array/basictypes/basictypesarray/basictypesarray.h:2311:64:错误:呼吁访问Universe :: GeneralPurpoSecontainers :: generspurpurposecontainers :: belypurposecontainers :: basictypesypesray :: basictypesypesypesypesypectectecteptectemer:BasicTypesArray :: BasictypesArrayproxy('

         return ( BasicTypesArrayProxy( *this, entryIndex ) );

对不起,输给了长期错误消息。

为什么编译器试图用代理调用代理构造函数,而不是指对类的参考,它嵌套在??

我认为它可以运行您的类BasicTypesArrayProxy( *this, entryIndex )的构造函数。但是要返回值,它必须将复制构造函数运行到调用代码。您可以尝试此测试:将operator[]的返回类型设置为参考(这将导致实际运行中崩溃(,以查看您的代码是否可以通过编译阶段。

最新更新