最近下面的代玛一直没调试通,请高手给指点一二
         typedef double DataType;
DataType dFinalTime = paraSet.m_dFinalTime;
DataType dDelta_t = paraSet.m_dTimeDelta;
int nIterations = int( dFinalTime/dDelta_t ); // Domain & Mesh
typedef COrthogonalMesh<DataType> MeshType;
DataType dXmin = paraSet.m_dMeshXmin;
DataType dXmax = paraSet.m_dMeshXmax;
DataType dYmin = paraSet.m_dMeshYmin;
DataType dYmax = paraSet.m_dMeshYmax;
int nNx = paraSet.m_nMeshNx;
int nNy = paraSet.m_nMeshNy;
MeshType Mesh( dXmin, dXmax, dYmin, dYmax, nNx, nNy );编译时出下了以下链接错误:
error LNK2019: unresolved external symbol "public: __thiscall COrthogonalMesh<double>::COrthogonalMesh<double>(double,double,double,double,int,int)" (??0?$COrthogonalMesh@N@Multivac@@QAE@NNNNHH@Z) referenced in function "public: void __thiscall OnActiveContoursMultiactive(void)" (?OnActiveContoursMultiactive@CMultiActiveContoursDoc@@QAEXXZ)error LNK2019: unresolved external symbol "public: virtual __thiscall COrthogonalMesh<double>::~COrthogonalMesh<double>(void)" (??1?$COrthogonalMesh@N@Multivac@@UAE@XZ) referenced in function "public: void __thiscall CMultiActiveContoursDoc::OnActiveContoursMultiactive(void)" (?OnActiveContoursMultiactive@CMultiActiveContoursDoc@@QAEXXZ)而我的COrthogonalMesh类是这样定义的:
template <class T>
class COrthogonalMesh: public CMesh<T>
{
public: COrthogonalMesh();
COrthogonalMesh(T Xmin, T Xmax, T Ymin, T Ymax,
int Nx, int Ny); ~COrthogonalMesh();
public: void Save(CString XFile, CString YFile);
void SaveNonOrthogonalMesh(CString PointsFile,
CString EdgesFile,
CString TrianglesFile); };  // COrthogonalMesh.我想可能问题出在类模板上,因为从错误提示上看通过类模板,出现了COrthogonalMesh<double>(...)这样的函数,而正确的定义应该是CorthogonalMesh(...);
我试着用以下两种定义也不行
MeshType* Mesh = new MeshType( dXmin, dXmax, dYmin, dYmax, nNx, nNy );
COrthogonalMesh mesh(dXmin, dXmax, dYmin, dYmax, nNx, nNy);请问有什么解决的办法吗?

解决方案 »

  1.   

    我这能link通过,试试看
    template <typename T>
      

  2.   

    1、template <typename T>还是template <class T>应该没有什么区别吧
    2、 COrthogonalMesh和CMesh的定义是否都放在头文件中定义和实现。若没有都放在头文件中试一下。
      

  3.   

    1、template <typename T>还是template <class T>应该没有什么区别吧
    >>我给你讲你也不一定懂 
    >>关于 typename  class 的区别 《c++ templates》P126  2、 COrthogonalMesh和CMesh的定义是否都放在头文件中定义和实现。若没有都放在头文件中试一下。
    >>《c++ tempaltes》 p63 分离模型讲解 很清楚 500页的书我3个礼拜就看完了。因为这本书很好 
      

  4.   

    我试验成功的准备只是直接在前面加CMesh说明和定义paraSet