请各位帮看看,出现什么问题。
实现目标:通过类A中定义的静态变量b,来初始化类对象。
程序1运行结果正确;然而,当采用模板方式是,download时提示error,“__t1A1Zf$b”。
请问为什么会出现这样的错误,怎样解决? 谢谢!
程序1:
struct Base_RMatrix {
float _data[3][3];
};
class A:public Base_RMatrix
{
public:
A() : Base_RMatrix(b) {}
void print();
static const Base_RMatrix b;
};
void A::print()
{
cout<<_data[0][0]<<endl;
}
const Base_RMatrix A::b=
{{
{1., 0., 0.},
{0., 1., 0.},
{0., 0., 1.}
}};
void test()
{
A a1;
a1.print();
}
程序2:
template<class T>
struct Base_RMatrix {
T _data[3][3];
};
template<class T>
class A:public Base_RMatrix<T>
{
public:
A() : Base_RMatrix<T>(b) {}
void print();
static const Base_RMatrix<T> b;
};
template<class T>
void A<T>::print()
{
cout<<_data[0][0]<<endl;
}
template<class T>
const Base_RMatrix<T> A<T>::b=
{{
{1., 0., 0.},
{0., 1., 0.},
{0., 0., 1.}
}};
void test()
{
A<float> a1;
a1.print();
}