读书人

各位大神:VS2010 error C3416:显式专

发布时间: 2013-07-08 14:13:00 作者: rapoo

求助各位大神:VS2010 error C3416:显式专用化可能无法显式实例化
//MatrixBase.h
template<class Real>
class MatrixBase {
...
template<typename OtherReal>
void CopyFromSp(const SpMatrix<OtherReal> &M);
...
}
///////////////////////////////////////////////////////////////////////

//MatrixBase.cpp
template<typename Real>
template<typename OtherReal>
void MatrixBase<Real>::CopyFromSp(const SpMatrix<OtherReal> & M) {...}

template
void MatrixBase<float>::CopyFromSp(const SpMatrix<float> & M);
template
void MatrixBase<float>::CopyFromSp(const SpMatrix<double> & M);
template
void MatrixBase<double>::CopyFromSp(const SpMatrix<float> & M);
template
void MatrixBase<double>::CopyFromSp(const SpMatrix<double> & M);
//////////////////////////////////////////////////////////////////////
编译后,描红的两行报错:
error C3416: “kaldi::MatrixBase<Real>::CopyFromSp”: 显式专用化可能无法显式实例化
with
[
Real=float
]
error C3416: “kaldi::MatrixBase<Real>::CopyFromSp”: 显式专用化可能无法显式实例化
with
[
Real=double
]

不知道为什么出错,请各位大神指教! Visual?Studio?2010 C++ 模板实例化 error?C3416
[解决办法]
你写这一坨想干嘛?
[解决办法]
那你可能不得不改用此工具包当初使用的编译器了
模板的可移植性是很差的。

[解决办法]

引用:
引用:那你可能不得不改用此工具包当初使用的编译器了
模板的可移植性是很差的。
这个工具包是在linux下开发的,但是提供了windows下VS2010的工程文件。
这个错误能改吗?

1. 2010打个sp1试试
2. 如果还不行,给这个开源的开发和维护人员发邮件问问
3. 如果还不行,最好放弃,或者把上面两个函数删了,试试能不能编
[解决办法]
linux下如果用gcc的话,windows下可用mingw
[解决办法]
在你对模板掌握度比较低的情况下,最好别折腾。
你很容易造成可以编译,但是调用的不是应该的函数。

读书人网 >C++

热点推荐