Я пытаюсь перенести проект с 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 ;
};
я не могу найти какие-либо проблемы с кодом, а сама ошибка не очень информативно.
Надеюсь, что я что-то пропустил или кто-то столкнулся с подобной проблемой и имеет идею, как ее решить.
Спасибо.
Ваш фрагмент очень неадекватен. Что такое «CSegment»? Что такое «сегменты»? –
сегменты - это аргумент функции, я опечатал ее, изменил ее сейчас. имеет для CSegment, не имеет значения, что это такое? – Shperb
Сохраните свой код, чтобы вы могли подать сообщение об ошибке –