1
#include <iostream>
#include <string>
using namespace std;
template <class Type>
class Matrix
{
public:
Type matrix[2][2];
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
if (typeid(matrix[0][0]).name() == typeid(string).name()) {
matrix[i][j] = "0";
}
else {
matrix[i][j] = 0; //this is where I get C2593
}
}
}
}
};
int main()
{
Matrix<string> mString;
Matrix<int> mInt;
.
.
.
return 0;
}
所以,我在此基质模板,我想"0"
初始化它,如果矩阵的类型为字符串。否则,我想用0
进行初始化。我在这里尝试了这件事,我得到了一个error C2593: 'operator =' is ambiguous
。有什么我可以做的,或者我的方法是完全错误的?不同的构造函数模板:一个字符串和一个为别的
[模板专业化](http://www.cprogramming.com/tutorial/template_specialization.html)? –
另外,如果字符串矩阵在初始化时真的应该是字符串“0”,而不仅仅是空的?因为那样你就可以'矩阵[i] [j] = T();' –
哦,我在拼写时犯了一个错误。我不是故意放置括号。 @JoachimPileborg不幸的是,他们必须,是的。 –