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