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

    [C++]Funzione statica, argomenti non statici

    Salve a tutti,
    sto implementando alcune classi per fare operazioni algebriche e fra le vari operazioni che devo fare vi é anche il prodotto scalare.Dopo averlo implementato tranquillamente come member function della mia classe "vettore", volevo peró anche implementarlo come funzione statica, ovvero l'ideale sarebbe scrivere:
    codice:
    double p = dotProduct(vettore a, vettore b);
    Come posso definire e creare correttamente questa funzione? E dove la posso definire (header o .cpp)?
    vettore a e vettore b non sono elementi statici, quindi teoricamente credo di non poterlo fare, ma sarebbe comodo chiamare la funzione senza chiamare a.dotProduct(b) come se dotProduct fosse member function(anche se è solo un capriccio, è ovvio che alla fine sia a che b vanno istanziati...)
    Grazie per l'aiuto!

  2. #2
    static in C++ ha un significato ben preciso (anche se molteplice a seconda del contesto):
    non mi pare che possa considerarsi equivalente all'uso della parola Italiana "statico" della tua richiesta.

    Studiati: dichiarazione, prototipo e definizione di funzione, parole chiave extern e static.
    ;-)

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    fai un'overload della funzione nella classe e richiamala facendo

    ClasseVettore:otProduct
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  4. #4
    Grazie mille a entrambi, in realtá sbagliavo perchè pensavo che le funzioni dichiarate static nelle classi potessero accedere solo ai dati static della stessa classe.
    In realtá è bastato dichiarare il metodo dotProduct(vettore v1, vettore v2) static nella classe e poi applicarlo ai vettori v1 e v2 che ovviamente sono dichiarati e definiti fuori.

  5. #5
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    in realtá sbagliavo perchè pensavo che le funzioni dichiarate static nelle classi potessero accedere solo ai dati static della stessa classe
    infatti è così..

    una funzione o metodo statico può accedere ai membri statici della stessa classe (se è definita in una classe) e può avere come parametri qualsiasi argomento statico o non statico..

    Attento a non confonderti.. alla tua funzione statica stai passando parametri non statici (lecito) non sta accedendo a membri non statici della classe dichiarante (non lecito)

  6. #6
    Hai ragione, avevo fatto confusione fra le due cose ieri notte..e ho continuato a essere confuso anche oggi pomeriggio !
    Grazie per l'aiuto!

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.