Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    informazione su c++

    che cos'è un linker error?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Un errore del linker.

    Il linker e' un programma che viene eseguito dopo che il compilatore ha terminato il proprio compito.

    Questo prende tutti i file oggetto e le librerie e li "unisce" risolvendo le chiamate e trasformando il tutto in un eseguibile.

    Per essere piu' precisi, indica di quale errore si tratta.

  3. #3

    programma con linker error

    questo programma ordina gli elementi di due array ( uno di tipo intero e l'altro di tipo float )
    usando i template
    dopo aver compilato il programma mi segnala questi errori:

    [Linker error] undefined reference to `swap(int*, int*)'
    [Linker error] undefined reference to `swap(float*, float*)'



    #include <iostream>
    #include <stdlib.h>
    using namespace std;

    template< class T >
    void bobbleSort( T *Ptr, const int count )
    {

    void swap ( T*, T* );
    for ( int pass = 0; pass < count - 1; pass++ )

    for ( int j = 0; j < count - 1; j++)

    if (Ptr[j] > Ptr[j + 1] )

    swap( &Ptr[j], &Ptr[j + 1] );
    }
    template< class T >
    void swap( T *elPtr1, T *elPtr2 )
    {
    T Hold = *elPtr1;
    *elPtr1 = *elPtr2;
    *elPtr2 = hold;
    }

    int main()
    {
    const int Count = 9;
    int a[Count] = {12,76,45,23,85,26,10,55,70 };
    float b[Count] = {12.6,76.3,54.9,23.7,43.8,32.1,47.4,28.6,13.7};


    cout << "Gli elementi dell' array 'a[Count]' sono:\n";

    for ( int i = 0; i < Count; i++)
    cout << a[i] << " ";

    bobbleSort ( a, Count );
    cout << "\nGli elementi dell' array 'a[Count]' in ordine crescente sono:\n";

    for ( int i = 0; i < Count; i++ )

    cout << a[i] << " ";

    cout << "\nGli elementi dell' array 'b[Count]' sono:\n";

    for ( int i = 0; i < Count; i++)
    cout << b[i] << " ";


    bobbleSort ( b, Count );
    cout << "\nGli elementi dell' array 'b[Count]' in ordine crescente sono:\n";

    for ( int i = 0; i < Count; i++ )

    cout << b[i] << " ";




    system("PAUSE");
    return 0;
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    1) metti la funzione swap nel sorgente *prima* delle bobbleSort (a proposito ... non si dovrebbe chiamare bubbleSort? ... comunque non importa) ...

    2) elimina la dichiarazione void swap ( T*, T* ); che hai inserito all'interno della bobbleSort;

    3) nella swap utilizza la variabile hold stando attento alle minuscole/maiuscole (in C/C++ sono fondamentali) ... o si chiama Hold o si chiama hold ...

  5. #5

    chiarimento

    ciao oregon,ti ringrazio per avermi risposto, ma purtroppo non ho capito il primo punto della tua risposta
    mi potresti dare ulteriri chiarimenti?
    grazie

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Cosa c'e' da chiarire? Sposta *fisicamente* il codice della funzione ... mettila *prima* della funzione bobblesort ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.