對不起,如果我仍然問這個問題,但我已經給出的解決方案,如果我做一個小例子,如果我嘗試在我的項目中實現它我不斷收到錯誤在標題中。
這是我的結構
沒有匹配的構造函數初始化'點'
template<typename T>
struct element{
int i;
int j;
T val;
element(){}
element(T &other): val(other){} // this is the solution i previously got
template<typename U>
element(const element<U>& e): val(static_cast<T>(e.val)), i(e.i), j(e.j){}
// this one is used to help the main class cast types.
};
在我的稀疏矩陣類我創建類型元素的動態數組,
element<T> *m; // the class is also template
一切正常,只是基本數據類型的罰款。
我需要做的是讓我的動態數組由elements
組成,使用自定義數據類型。
測試我一直在做的是一個結構點
struct point {
int x;
int y;
point(int xx, int yy) : x(xx), y(yy) {}
};
我在類中實現的構造是
explicit sparseMatrix(const T& d) : mat(0), capacity(0), n(0), def_value(d) {
m = new element<T> [capacity];
}
當主我做
sparseMatrix<point> mcp(point(1, 2));
我得到錯誤no matching constructor for initialization of 'point'
我在做什麼錯了?
我該如何解決這個問題?
在一個不相關的筆記上,你是否確定*你想要一個指向'element'而不是'std :: vector'的指針?使用矢量,您不必自己處理重新分配。另外,在你展示的'sparseMatrix'構造函數中,你將'capacity'初始化爲零,並將其用於分配數據的大小。你確定這是個好主意嗎? –
我不得不這樣做,因爲我的項目我不允許使用stl容器。每次將一個元素添加到矩陣中時,容量都會增加 – user7337963