je reçois le "Segmentation fault (core dumped)" erreur avec le code suivant:Segmentation fault (core dumped) l'erreur C de
#include <iostream>
#include <cstring>
template <class T>
T maxn(T* elements, int n);
template <> const char* maxn <const char*>(const char* elements[], int num);
int main(){
using namespace std;
//Using template
int num[6] = {2, 3, 4, 5, 6, 22};
double num2[4] = {16.6, 10.5, 2.3, 1.1};
int larg = maxn(num, 6);
double larg2 = maxn(num2, 4);
cout << larg << endl << larg2 << endl;
//Using specialization
const char* pps[5] = {"Hello", "There", "I", "am", "me"};
const char* largest = maxn(pps, 5);
cout << largest << endl;
return 0;
}
//return largest element in an array of T of n elements
template <class T>
T maxn(T* elements, int n){
T largest = 0;
for (int i=0; i<n; i++)
largest = elements[i] > largest ? elements[i] : largest;
return largest;
}
//Returns address that points to the largest string
template <> const char* maxn <const char*>(const char* elements[], int num){
int longest = 0;
int i =0;
for (i=0; i<num; i++)
if (strlen(elements[i]) > strlen(elements[longest]))
longest = i;
return elements[i];
}
Je recevais le « avertissement: conversion dépréciée de constante chaîne CHAR * "erreur mais j'ai changé quelques char * tableaux et arguments de fonction à const char * et je me suis débarrassé de cela. Maintenant, le code de compilation et je reçois la sortie suivante:
16,6
Segmentation fault (core dumped)
Les deux premières lignes sont à droite, mais je ne peut pas comprendre ce qui se passe au troisième. S'il vous plaît, aidez, merci.
Vous économiser beaucoup d'ennuis si vous avez utilisé 'std :: string' au lieu de chaînes de style C. – Lstor
Gardez à l'esprit que votre fonction 'maxn' est déjà écrite pour vous en tant que' std :: max_element'. –
StackOverflow est de nouveau choisi de préférence à gdb. Pourquoi les gens n'apprendront-ils pas à utiliser gdb? – paddy