2011-02-16 102 views
0

我的任務非常繁重,我還沒有找到任何足夠好的解決方案。所以,這裏是說明: - 任務是評估多個一維數組,其數量可以改變 - 好消息是,它可以指定類型的數組可變數量的構造函數的變量類型在C++中創建可變私有成員

而且這樣做的可取方式: - 創建類的構造函數接受可變數量的數組 - 這些數組也應該用作屬性(私有成員),因此可以在對象的生命週期期間對它們進行多個操作

我怎麼試着做到這一點: - 具有可變數量參數的構造函數成員函數(我不知道爲什麼這不起作用) - 帶vec的構造函數tor應該是更好的方法,但如何存儲數組的類型是在單獨的數組中指定的,這意味着您不能期望某些數組的數據類型提前預期 - 我嘗試將可變數目的數組聲明爲帶有預處理器的私有成員,但它似乎循環和其他代碼不能在私有內部正常工作:聲明

任何人的想法?

+2

您能向我們展示您的代碼嘗試的一些嗎?鑑於你想要類型多態,看起來你需要使用繼承或模板,但很難一目瞭然。 – 2011-02-16 09:31:17

回答

2

構造接受可變數量的陣列:

vector< vector<T> > ? 

內載體可以具有不同的尺寸,但必須是同一類型的。

與參數

您可以使用的,創建一個類的參數變量數的函數變量數構造成員函數,看看如何提高::綁定的行爲,需要大量不同的參數名單。

boost mpl可能會回答你正在嘗試做的事情,雖然它相當不清楚。

+0

謝謝@CashCow。我知道內在的媒介,但我沒有指出這一點。但是,這描述了我的部分問題:我的內部向量是不同類型的。 – mbpro 2011-02-16 09:47:12

0

爲什麼不使用簡單的參數化類?

如果您的編譯器支持C++ 0x,您還可以使用具有可變數量參數的構造函數的初始化程序列表。

template<class ArrayType> 
class ArrayContainer 
{ 
    std::vector<ArrayType> m_arrays; 

    public: 
    ArrayContainer(std::initializer_list<ArrayType> arrays) 
    { 
    m_arrays.reserve(arrays.size()); 
    std::copy(arrays.begin(), arrays.end(), m_array); 
    } 
}; 

該構造函數現在接受可變數目的數組。

auto container = new ArrayContainer({ a, b, c });