【发布时间】:2011-09-12 16:18:00
【问题描述】:
我在 c++ 中遇到泛型问题。我有两个 Matrix.h 和 Matrix.cpp 文件。这是文件:
#pragma once
template<class T>
class Matrix
{
public:
static T** addSub(int size,T** firstMatrix,T** secondMatrix,int operation);
}
和 Matrix.cpp
#include "Martix.h"
template<class T>
static T** Matrix<T>::addSub( int n,T **firstMatrix,T **secondMatrix,int operation)
{
//variable for saving result operation
T **result = new T*[n];
//create result matrix
for( int i=0;i<n;i++)
result[i] = new T[n];
//calculate result
for( int i=0;i<n;i++)
for(int j=0;j<n;j++)
result[i][j] =
(operation == 1) ? firstMatrix[i][j] + secondMatrix[i][j]:
firstMatrix[i][j] - secondMatrix[i][j];
return result;
}
当我运行这些时,我得到以下错误:
Error 1 error LNK2019: unresolved external symbol "public: static int * * __cdecl Matrix<int>::addSub(int,int * *,int * *,int)" (?addSub@?$Matrix@H@@SAPAPAHHPAPAH0H@Z) referenced in function "public: static int * * __cdecl Matrix<int>::strassenMultiply(int,int * *,int * *)" (?strassenMultiply@?$Matrix@H@@SAPAPAHHPAPAH0@Z) C:\Users\ba.mehrabi\Desktop\Matrix\matrixMultiplication\main.obj matrixMultiplication
有什么问题?
【问题讨论】:
-
在声明的同一编译单元中是否有模板方法定义?
-
您拼错了包含文件的名称。我想知道您是否在这里给我们您的真实代码,或者您是否只是从记忆中写下一些小说……此外,C++ 没有“泛型”;如果您具有 Java 背景,那么可能值得您花时间熟悉常见的 C++ 习惯用法,它们完全不同。例如,在 C++ 中你应该很少或永远不会说
new。