Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    44

    [C++] Definire una funzione scegliendo con lo switch

    Ciao a tutti. Ho un programma che ha la possibilità di eseguire 3 algoritmi differenti, ma vorrei scrivere il codice utilizzando un solo switch. Quello che vorrei fare è una cosa del genere:


    codice:
    switch (S) {
    		case 1: //BOX
    			alg(a, b, n, dx)=box(a, b, n, dx);
    			break;
    		case 2:
    			alg(a, b, n, dx)=trap(a, b, n, dx);
    			break;
    		default:
    			cout << "Nessun Algoritmo Associato";
    			break;
    E avere poi il codice generico con la funzione alg(a,b,n,h) piuttosto che un altro switch.

    Quando compilo (g++ su OSX) l'errore è:

    "error: lvalue required as left operand of assignment"

    Premetto che non ho la più pallida idea se ciò sia possibile o meno, però mi farebbe molto comodo. Qualcuno può darmi una mano? Grazie
    Massimo

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    59
    Ciao!!!

    Non so se ho capito bene quello che vuoi fare...

    Ma li stai cercando di assegnare una funzione ad un'altra funzione ???
    perché se è così ricevere "error: lvalue required as left operand of assignment" è la cosa più naturale del mondo...

    Comunque se ho capito bene quello che vuoi fare potresti risolvere creando un vettore di puntatori a funzione...

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    44
    mi rendo conto che la mia spiegazione è poco chiara, ma non so come esprimermi meglio cmq si, quello che vorrei fare è avere un codice in cui compare una funzione generica "alg" con relativi argomenti e a seconda del valore assunto dallo switch sostituire ad "alg" le funzioni "box" o "trap".

    ho cercato l'errore in rete, però non riesco a capirne esattamente il significato.

    col vettore di puntatori a funzione intendi un vettore che ha come componenti varie funzioni e assegno il numero della componente alla variabile di switch?

    scusa per la "scarsezza" :P
    Massimo

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Ma scrivere semplicemente

    codice:
    switch (S) {
    		case 1: //BOX
    			box(a, b, n, dx);
    			break;
    		case 2:
    			trap(a, b, n, dx);
    			break;
    		default:
    			cout << "Nessun Algoritmo Associato";
    			break;
    non andava bene?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5

    Re: [C++] Definire una funzione scegliendo con lo switch

    Originariamente inviato da ProxWeb
    E avere poi il codice generico con la funzione alg(a,b,n,h) piuttosto che un altro switch.
    Se ho capito bene, questa è una situazione tipica che puoi risolvere applicando il polimorfismo. Switch solo in fase di costruzione (factory) e poi chiamata al metodo della classe base.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    44
    sarebbe andato bene se non avessi dovuto utilizzare le funzioni più di una volta cmq ho risolto così: definisco una funzione

    codice:
    var alg(var a, var b, int &n, var &h, int S){
    	
    	switch (S) {
    		case 1:
    			box(a, b, n, h);
    			break;
    		default:
    			break;
    	}
    e la metto come funzione generica
    Massimo

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Oppure usi un puntatore a funzione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.