看來boost::multi_array<T, n>
要求T
有一個無參數的構造函數。考慮下面的例子。無法初始化boost :: multi_array <T, n>,除非T有無參數的構造函數
#include <boost/multi_array.hpp>
class ConstructorHasArguments {
ConstructorHasArguments(int arg) {};
}
int main() {
boost::multi_array<ConstructorHasArguments, 1> foo;
return 0;
}
這會導致編譯錯誤。
no matching function for call to ‘ConstructorHasArguments::ConstructorHasArguments()
的問題是,當boost::multi_array<T,n>
拷貝構造函數試圖爲副本分配空間,它試圖調用T()
。當然,我可以爲我的類添加一個無參數構造函數。但是如果我有一個沒有參數的構造函數沒有意義的類呢?
有沒有簡單的方法來使用boost :: multi_array當T沒有無參數構造函數?
謝謝丹琪。的確,現在看起來'multi_array_ref'可能是我最好的選擇。在進一步挖掘之後,我發現這個主題有一個[bug報告](https://svn.boost.org/trac/boost/ticket/6889)。 –
建議的鏈接更改很好。分配內存分配和初始化到不同的方法是非常有意義的。 –