尝试重载operator =时,'未定义引用'错误

时间:2013-09-03 13:28:44

标签: c++

尝试重载operator =

时遇到错误

不确定代码有什么问题。谢谢你的帮助!

这是我的代码:

matrix.h

namespace MATRIX{
  class Matrix{
      // other private methods
      public:
          // other public methods
          template < typename T >
          Matrix& operator=(std::list<T> & data) ;
  }
};

matrix.cu

namespace MATRIX{
   // other definitions
   template < typename T >
   Matrix& Matrix::operator=(list<T> & data) {
       // method definition
   }
}

test.cu

#include <list>
#include "matrix.h"
// other includes
int main(void){
    using namespace std;
    using MATRIX::Matrix;
    Matrix k_matrix;
    list<double> k_list(100);
    // initialize k_list
    k_matrix = k_list;
}

构建

nvcc -c matrix.cu
nvcc -o test test.cu matrix.o

第二个命令出错

 tmpxft_00001f0f_00000000-3_test.cudafe1.cpp:(.text+0x202): 
 undefined reference to`MATRIX::Matrix& MATRIX::Matrix::operator=<double> 
 (std::list<double, std::allocator<double> >&)'

0 个答案:

没有答案