使用模板类时出现内部编译错误
internal compiling error when using template class
>我正在尝试将项目从VS2008迁移到VS2013,该项目在VS2008中编译和工作,不幸的是,在使用VS2013编译相同的代码时,我突然收到"编译器中发生了内部错误"。尝试调用模板类的方法时发生错误
void func(const CMatrix<CSegment>& segments) const
{
int row, col;
row = segments.NumOfRows(); //error points to here
col = segments.NumOfColumns(); // if I remove the above line then the error points to here
}
CMatrix的定义如下:
class CBaseMatrix
{
public:
CBaseMatrix() {};
virtual ~CBaseMatrix() {};
virtual void Resize(const int row, const int col) = 0;
virtual inline int Size() const = 0;
virtual inline int NumOfColumns() const = 0;
virtual inline int NumOfRows() const = 0;
};
template <class T>
class CMatrix : public CBaseMatrix
{
public:
CMatrix() :
m_rawBuff(0),
m_rawBuffSize(0),
m_columns(0),
m_rows(0),
m_data(0)
{};
CMatrix(const CMatrix& matrix):
{
*this = matrix;
};
inline int NumOfColumns() const {return(m_columns);};
inline int NumOfRows() const {return(m_rows);};
inline int Size() const {return(m_data.size());};
private:
int m_columns;
int m_rows;
vector<T> m_data;
T* m_rawBuff ;
int m_rawBuffSize ;
};
我找不到代码的任何问题,而且错误本身的信息量不是很大。
我希望我错过了一些东西,或者有人遇到了类似的问题并知道如何解决它。
谢谢。
我不知道
代码在任何编译器下如何工作,如下所示:
void func(const CMatrix<CSegment>& segment) const
{
int row, col;
row = segments.NumOfRows(); //error points to here
col = segments.NumOfColumns();
}
传入一个名为段的变量,代码尝试访问一个名为段s。
尝试将参数名称更改为段。
嗯,我发现了问题所在,请注意,在原始代码中:
CMatrix(const CMatrix& matrix):
{
*this = matrix;
};
我在构造函数后面有":",但初始化列表为空,不知何故,这导致编译器崩溃了。
删除它们后:
CMatrix(const CMatrix& matrix)
{
*this = matrix;
};
一切正常!
请注意,我将错误提交给Microsoft,希望他们会在下一次更新中解决这个问题,但与此同时,我将解决方案留在这里,以防其他人遇到此问题。
相关文章:
- 编译在 Python 代码内部调用的 C++ 代码时出错,使用 Boost Python
- 遇到内部编译错误时该怎么办
- 从代码内部编译QT源代码
- 在cpp项目(VS2005)内部编译的c模块中无法识别内联关键字
- 交叉编译助推 1.60.0 内部依赖问题
- 在 C++ 中作为指针或别名进行内部编译的引用
- 使用SSE内部函数编译一个简单的c++程序
- C++成员函数内部PTHREAD_MUTEX_INITIALIZER无法编译
- 使用模板类时出现内部编译错误
- 在矢量上使用调整大小时,矢量内部结构中的unique_ptr不会编译
- 当杂注内部有编译指示时,OpenMP 中会发生什么?
- 在C/ c++语言…for循环在内部编译为While循环
- 类内部的纯虚析构函数定义会导致编译错误
- 内部编译错误,而使用增强精神x3
- 模板类内部的Typedef-type给出编译错误
- 在windows 7上编译源Qt 4.7.4错误qmake不是内部或外部命令
- 内部编译错误:分割错误在gcc.发送可变模板到struct时
- 编译 Android 版 Qt:"mingw32-make"不被识别为内部或外部命令
- 如何防止std标头(在Xcode中)内部发生编译错误
- 如何摆脱内部编译错误:非法指令min() _GLIBCXX_USE_NOEXCEPT{返回__FLT_MIN__;}