我有在C++仿製藥的問題,我有兩個Matrix.h和Matrix.cpp files.Here是文件:成員函數
#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)" ([email protected][email protected]@@[email protected]) referenced in function "public: static int * * __cdecl Matrix<int>::strassenMultiply(int,int * *,int * *)" ([email protected][email protected]@@[email protected]) C:\Users\ba.mehrabi\Desktop\Matrix\matrixMultiplication\main.obj matrixMultiplication
是什麼問題?
您是否在聲明的同一編譯單元中使用了模板方法定義? – Simone
http://stackoverflow.com/questions/488959/how-do-you-create-a-static-template-member-function-that-performs-actions-on-a-te – Patrick
你拼錯包括的名稱文件。我想知道你是否在這裏給我們提供真正的代碼,或者如果你只是從內存中寫下一些小說......另外,C++沒有「泛型」。如果您來自Java背景,那麼您可能會習慣於使用常見的C++習慣用法,這些習慣用法很不相同。例如,你應該很少或從不在C++中說'新'。 –