提升用户定义的类对象的多边形

boost multiarray of user defined class object

本文关键字:多边形 对象 定义 用户      更新时间:2023-10-16

我需要描述一个是myclass的对象类的两个维度的增强型求。是否可以?或者只能以标准类型为int,double等定义多边形

与'本机'C 数组不同,增强多阵列具有值语义。

您的元素类型必须可复制,因为multi_array有望复制:

multi_array

...

模型。* MultiArrayCopyConstructible。根据元素类型,它也可以建模EqualityComparableLessThanComparable

比较以下内容:

#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
}

在coliru

上看到

是的,这是类模板。它旨在替换STD ::向量嵌套,并使用更少的内存。 boost::multi_array<myclass, 2>,创建一个二维数组。

是的,我已经尝试了

typedef boost::multi_array<Pixel, 2> pixel_2d_t;

(像素是我的班级),并在标题文件pixel.h

中定义像素
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名称空间的类。