33,027
社区成员




正在链接...
main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Matrix::~Matrix(void)" (??1?$Matrix@H@@QAE@XZ),该符号在函数 _main 中被引用
main.obj : error LNK2019: 无法解析的外部符号 "public: static void __cdecl Matrix::Display(class Matrix &)" (?Display@?$Matrix@H@@SAXAAV1@@Z),该符号在函数 _main 中被引用
main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Matrix::Matrix(int,int,int)" (??0?$Matrix@H@@QAE@HHH@Z),该符号在函数 _main 中被引用
d:\My Documents\Visual Studio 2008\Projects\MagicMatrix\Debug\MagicMatrix.exe : fatal error LNK1120: 3 个无法解析的外部命令
// Matrix.h
#if!defined _MATRIX_H
#define _MATRIX_H
#include <iostream>
#include <vector>
using namespace std;
template <typename T>
class Matrix
{
public:
Matrix(void);
~Matrix(void);
Matrix(int r,int c,T i); //给矩阵初始化,值全部设为 i
static void Display(Matrix<T> &M); //显示所有元素
private:
int row,col;
vector<vector<T> > matrix;//看到有人提示这里不能直接为">>",我在中间添加了空格
};
#endif
// Matrix.cpp
#include "Matrix.h"
template<typename T>
Matrix<T>::Matrix(void) // 1?我想默认初始化一个空的矩阵 不知道这样写对吗?
{row=0;
col=0;
matrix(row,vector<T> (col,0)); //2?初始化对任意类型 可以用0吗? 用NULL 行吗?
}
template<typename T>
Matrix<T>::~Matrix(void)
{}
template <typename T>
Matrix<T>::Matrix(int r,int c,T i):
row(r),col(c),
matrix(row,vector<T> (col,i))
{}
template <typename T>
void Matrix<T>::Display(Matrix<T> & M)
{
for(int i=0;i<M.row;i++)
for(int j=0;j<M.col;j++)
{cout<<M.[i][j];}
cout<<endl;
}
//主程序
#include "Matrix.h"
#include <iostream>
using namespace std;
void main()
{
Matrix<int> Mat= Matrix<int>(2,2,0); //3? 这样写有误吗? 有什么其他写法吗?
Matrix<int>::Display(Mat);
}
template <typename T>
void Matrix<T>::Display(Matrix<T> & M)
{
for(int i=0;i<M.row;i++)
for(int j=0;j<M.col;j++)
{cout<<M[i][j];} //问题在这里:对于类型T,需要重载运算符<<
cout<<endl;
}