Dalam pengaturcaraan templat C++, apabila inferens jenis gagal, kaedah berikut boleh digunakan untuk menyelesaikan masalah: nyatakan parameter templat secara eksplisit. Contohnya: func
Menyelesaikan masalah dalam pengaturcaraan templat C++: Jenis inferens gagal
Masalah:
Apabila menggunakan templat C++, anda mungkin menghadapi kegagalan semasa membuat kesimpulan jenis, mengakibatkan ralat. Contohnya:
template<typename T> void func(T t) { // ... } int main() { func<int>(); // 类型推断失败 }
Penyelesaian:
Untuk menyelesaikan kegagalan inferens jenis, anda boleh menggunakan parameterisasi templat eksplisit untuk menentukan parameter jenis secara manual:
template<typename T> void func(T t) { // ... } int main() { func<int>(10); // 显式指定类型参数 }
Kes praktikal:
mengambil kira program berikut templatArray
untuk mencipta tatasusunan dalam apa jua jenis:template <typename T> struct Array { T* data; size_t size; Array(size_t size) : data(new T[size]), size(size) {} ~Array() { delete[] data; } T& operator[](size_t index) { return data[index]; } }; int main() { Array<int> arr(10); for (size_t i = 0; i < arr.size; ++i) { arr[i] = i * i; } for (size_t i = 0; i < arr.size; ++i) { std::cout << arr[i] << " "; } std::cout << std::endl; return 0; }
Array
template to create an array of any type:rrreeeThis program demonstrates the type-safe behavior of C++ templates. The Array
template is instantiated with the int
type, creating an array of integers. The elements of the arrays can be accessed and modified using the operator[]
Program ini menunjukkan gelagat selamat jenis templat C++ Templat Array
dibuat dengan operator[]
Atur cara mencetak kandungan tatasusunan, iaitu petak daripada integer dari 0 hingga 9.
Atas ialah kandungan terperinci Menyelesaikan masalah dalam pengaturcaraan templat C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!