C++ не может найти экземпляр функции шаблонаC++

Программы на C++. Форум разработчиков
Ответить
Гость
 C++ не может найти экземпляр функции шаблона

Сообщение Гость »


В настоящее время я работаю над своим личным проектом по расчету матриц с использованием Nvidia CUDA. Итак, у меня есть эти коды:

// файл Matrix_op.cuh шаблон __global__ void cuda_simple_op(T* data, ...other_args) { // здесь логика } // файл Matrix.h #include "matrix_op.cuh" шаблон класс Матрица { данные Т*; // другие реквизиты публика: // другие методы Матрица оператор+(const Matrix& другое) { Матрица resMat(M, N); cuda_simple_op (данные, ...other_args); // больше логики } } // файл main.cpp #include "matrix.h" интервал основной() { Matrix matA = Matrix::init(); Matrix matB = Matrix::init(); Матрица matC = matA + matB; } Я ожидал, что при компиляции файла main.cpp он сможет найти экземпляр функции cuda_simple_op(double), поскольку я уже указал double в Matrix в файле main.cpp.

Но когда я скомпилировал это с помощью nvcc -x cu main.cpp -o main, я получил эту ошибку:

ошибка: ни один экземпляр шаблона функции "cuda_simple_op" не соответствует списку аргументов. Типы аргументов: (double *, ...other_class) обнаружены во время создания экземпляра "Matrix Matrix::operator+(const Matrix &) [with T=double ]"

Как компилятор не может идентифицировать функцию cuda_simple_op в этом случае?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»