在网上下到有一段代码,准备学习一下,可是却发现似乎有问题,类定义如下:
#if !defined(AFX_MATRIX_H__3461DABF_4919_4B31_81EA_AC9397ABBAE1__INCLUDED_)
#define AFX_MATRIX_H__3461DABF_4919_4B31_81EA_AC9397ABBAE1__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <string>
class MatrixException
{
public:
MatrixException(std::string message) throw() {}
};
template<class T>
class TMatrix
{
public:
TMatrix() throw() : m_nWidth(0), m_nHeight(0), m_arByte(NULL) {}
TMatrix(int nWidth, int nHeight) throw();
TMatrix(int nWidth, int nHeight, T* pByte) throw();
TMatrix(const TMatrix& rhs) throw();
virtual ~TMatrix();
void SetDimension(int nWidth, int nHeight) throw();
void ZeroAll() throw();
void Clean() throw();
TMatrix& operator=(const TMatrix& rhs) throw();
void operator+=(const TMatrix& rhs) throw(MatrixException);
void operator-=(const TMatrix& rhs) throw(MatrixException);
void PriorityAdd(const TMatrix& rhs) throw(MatrixException);
// inline access functions
T& operator[](int nIndex) throw(MatrixException);
T operator[](int nIndex) const throw(MatrixException);
T& operator()(int nRow, int nCol) throw(MatrixException);
T operator()(int nRow, int nCol) const throw(MatrixException);
// getter
int GetWidth() const throw() { return m_nWidth; }
int GetHeight() const throw() { return m_nHeight; }
// uitilies
T* GetRow(int nIndex) throw(MatrixException);
T* GetArray() throw();
bool IsSameDimension(const TMatrix& rhs) const throw();
void MakeSameDimension(TMatrix& output) const throw(MatrixException);
// virtual functions
virtual void Load(std::string filename) throw(MatrixException) { throw MatrixException(_T("Not Implemented")); }
virtual void Save(std::string filename) const throw(MatrixException) { throw MatrixException(_T("Not Implemented")); }
#ifdef _DEBUG
virtual void Dump(std::ostream& os) const throw();
#endif
protected:
T* m_arByte;
int m_nWidth;
int m_nHeight;
};
主文件如下:
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include "TMatrix.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Hello World!" << endl;
system("pause");
return 0;
}
我什么都没做,仅仅是引用了这份文件,结果编译的时候有如下提示:
kriging_Variance.cpp
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(33) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(59): 参见对正在编译的类 模板 实例化“TMatrix<T>”的引用
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(34) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(35) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(37) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(38) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(39) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(40) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(45) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(48) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(50) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(51) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(62) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(75) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(85) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(98) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(192) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(206) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(220) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
d:\backup\我的文档\visual studio 2005\projects\kriging_variance\kriging_variance\tmatrix.h(231) : warning C4290: 忽略 C++ 异常规范,但指示函数不是 __declspec(nothrow)
请问这时为什么,怎样修改?