Buon pomeriggio Aiuto Con Funzioni Friend

di il
17 risposte

Buon pomeriggio Aiuto Con Funzioni Friend

Salve ragazzi mi spieghereste anche con un esempio cosa sono le funzioni friend? So un pò l'argomento ma vorrei magari degli approfondimenti con dei relativi esempi . Grazie millee

17 Risposte

  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

    Con una semplice ricerca ho trovato questo http://ninuzzo.freehostia.com/ant/it/cpp/cxxguide/friends.html che mi pare molto chiaro.
    Sul forum puoi trovare una risposta ad uno specifico dubbio, non puoi pretendere che qualcuno tenga una lezione!
  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

    Ragazzi qualcuno mi potrebbe fare l'esempio con il calcolo della distanza tra due punti???


    #include<iostream>
    #include<cmath>
    using namespace std;

    class punto
    {
    private :
    double x,y;
    public :
    punto();
    punto(double,double);
    friend punto distanza(punto,punto);
    };

    punto::punto()
    {
    x=0;
    y=0;
    }

    punto::punto(double a,double z)
    {
    x=a;
    y=z;
    }

    punto distanza(punto a,punto b)
    {
    punto C;

    C.x=(a.x-b.x)^2;
    C.y=(a.y-b.y)^2;

    return sqrt(C.x-C.y);
    }

    int main()
    {
    punto A(5,3),B(1,2);

    cout<<"la distanza e' : "<<distanza(A,B);

    return 0;
    }


    ps: scusatemi se l'ho trascritto cosi ma lo spoiler non lo vedo
    ps2:so che ci sono degli errori ma non li capisco....
  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

    Nel tuo caso la funzione distanza non appartiene alla classe punto, ma vuole accedere ai membri privati degli oggetti punto che gli vengono passati. Quindi, deve essere "amica" della classe di cui vuole vedere la parti "nascoste".
  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

    Ok l'ho capita la teoria ma non capisco cosa ho sbagliato nell'esercizio
  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

    La funzione deve restituire un double
  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

    Ah okok grazie mille , invece c'è un particolare...quando ho elevato al quadrato mi dà l'errore di conversione mentre se faccio un semplice
    ((a.x-b.x)*(a.x-b.x)) non mi dà l'errore questo perchè? devo richiuderlo tra parentesi??
  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

    Perché l'operatore ^ non esiste in c++ standard (esiste nel "c++ di microsoft" ma un tutt'altro significato), se vuoi elevare alla potenza devi utilizzare la funzione pow(x, y), dove x è la base e y è l'esponente, includendo la libreria cmath.

    ricordati che le funzioni friend sono da usare quando l'istanza chiamante non è un oggetto di classe. probabilmente il tuo era un esercizio a scopo didattico e quindi non preoccuparti, ma l'istanza chiamante per il calcolo di una distanza fra due punti è proprio uno di essi, quindi sarebbe sbagliato metterla come metodo friend.
  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

    oregon ha scritto:


    Quale? non è l'operatore che permette la creazione di oggetti gestiti dal "garbage collector"?
  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

    Sisi nel c++ di microsoft funziona in quel modo in dev non ricordavo quale fosse! si bhe a scopo didattico grazie mille!
  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

    State facendo confusione tra c++.net e c++ nativo.

    Nel normale c/c++ anche di microsoft il ^ è l'operatore or esclusivo bit a bit (come per tutti i compilatori)
  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

    oregon ha scritto:


    State facendo confusione tra c++.net e c++ nativo.

    Nel normale c/c++ anche di microsoft il ^ è l'operatore or esclusivo bit a bit (come per tutti i compilatori)
    perdindirindina, me ne ero scordato.
    mi ricordavo soltanto quel fatto del c++.net poiché l'avevamo visto in classe.
  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

    Ho portato l'esercizio alla prof con una seconda versione solamente che di tutto l'esercizio ho fatto una piccola cosa che non voleva che fosse stata eseguita in quel modo... ovvero nella funzione punto medio voleva che si facesse tornare l'oggetto nuovo nel programma principale e che quindi fosse poi eseguito con dei richiami....

    //Nello Sviluppo
    punto punto_medio(punto a,punto b)
    {
    punto C;

    C.x=(a.x+b.x)/2;
    C.y=(a.y+b.y)/2;

    return C;
    }

    //Nel programma principale ad esempio
    int main
    { punto A(4,5),B(5,7),C;

    cout<<"la coordinata del punto medio è rispettivamente ("<<C.get_x()<<","<<C.get_y()<<")"<<endl;
    return 0;
    }

    il problema e che durante la visualizzazione mi dice che le funzioni richiamate dall'oggetto C non possono essere usate...la prof con il casino che c'è stato ha detto che riguarderà il problema nel weekend per poi darmi la risposta il lunedi....cosa potrebbe esserci di sbagliato??
  • Re: Buon pomeriggio Aiuto Con Funzioni Friend

    Non è che si capisce molto da quello che scrivi ma forse vuoi ottenere il punto così nel main

    punto M = punto_medio(A, B);

    e quindi utilizzare M.get_x() e M.get_y() per ottenere le coordinate ?
Devi accedere o registrarti per scrivere nel forum
17 risposte