Dans la programmation de modèles C++, lorsque l'inférence de type échoue, la méthode suivante peut être utilisée pour résoudre le problème : spécifier explicitement les paramètres du modèle. Par exemple : func
Dépannage dans la programmation de modèles C++ : l'inférence de type échoue
Problème :
Lors de l'utilisation de modèles C++, vous pouvez rencontrer des échecs lors de l'inférence de type, entraînant des erreurs de compilation. Par exemple :
template<typename T> void func(T t) { // ... } int main() { func<int>(); // 类型推断失败 }
Solution :
Afin de résoudre l'échec de l'inférence de type, vous pouvez utiliser le paramétrage explicite du modèle pour spécifier manuellement les paramètres de type :
template<typename T> void func(T t) { // ... } int main() { func<int>(10); // 显式指定类型参数 }
Cas pratique :
Considérez le programme suivant qui utilise un modèle Array
pour créer un tableau de n'importe quel type :Array
template to create an array of any type:
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; }
This 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[]
rrreee
Array
est instancié avec le . int code>, créant un tableau d'entiers. Les éléments des tableaux sont accessibles et modifiés à l'aide de la méthode <code>operator[]
. Le programme imprime le contenu du tableau, qui sont les carrés. des entiers de 0 à 9.🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!