1

尝试重载 operator = 时遇到错误

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

这是我的代码:

矩阵.h

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

矩阵.cu

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

测试.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> >&)'
4

0 回答 0