C++ boost用户定义类对象的多数组

C++ boost用户定义类对象的多数组,c++,boost,C++,Boost,我需要描述一个对象类的二维boost多重数组,即myclass。可能吗?或者只能使用int、double等标准类型定义multiarray 提前感谢您的回答是的,这是一个课堂模板。它被设计用来取代std::vector嵌套,并使用更少的内存。Boo::MulyIORE数组,创建MyCase.< /P>< P>二维数组,不同于“原生”C++数组,Boost多数组具有值语义。 您的元素类型必须是可复制的,因为multi_数组承诺是可复制的: 多单元阵列 *多数组的模型,可复制。根据图元类型的不同,

我需要描述一个对象类的二维boost多重数组,即myclass。可能吗?或者只能使用int、double等标准类型定义multiarray


提前感谢您的回答

是的,这是一个课堂模板。它被设计用来取代std::vector嵌套,并使用更少的内存。Boo::MulyIORE数组,创建MyCase.< /P>< P>二维数组,不同于“原生”C++数组,Boost多数组具有值语义。 您的元素类型必须是可复制的,因为multi_数组承诺是可复制的:

多单元阵列

*多数组的模型,可复制。根据图元类型的不同,它还可以模拟相等可比和较小可比

比较以下各项:

#include <boost/multi_array.hpp>

using Arr = boost::multi_array<int, 3>;

struct Ok { };
struct NotOk : boost::noncopyable { };

int main()
{
    boost::multi_array<int,   3> arr1(boost::extents[7][6][3]); // ok
    boost::multi_array<Ok,    3> arr2(boost::extents[7][6][3]); // ok
    boost::multi_array<NotOk, 3> arr3(boost::extents[7][6][3]); // COMPILE ERROR
}
看到了吗?是的,我试过了

typedef boost::multi_array<Pixel, 2> pixel_2d_t;
Pixel是我的类,在头文件Pixel.h中定义Pixel

class Pixel:
    public IRDetectorComponent<Pixel>::Type
    ,public det::IRPositionable<Pixel>
    {
    public:

        static const char* const kComponentName;

        static const char* const kComponentId;
        /**
         *   Pixel Status definition
         */
        enum Status {
          eGood = 0,
          eBadCalibration = 1,
          eUnknown
        };
。。。

但我认为这是错误的

/home/lperal/jemeuso/jape/External/boost/1_55_0/include/boost/multi_array/base.hpp:139:25:错误:指向不完整类型的指针的算术运算 'irdet::CCD::Pixel' TPtr newbase=base+idx*步长[0]


作为CCD.h类,我在irdet名称空间中定义了multiarray。

您不能编写boost::multi_array吗?是的,我已经尝试定义了