2012-02-21 19 views
6

Mam klasę abstrakcyjną i chciałbym wiedzieć, czy można zdefiniować funkcję abstrakcyjną z listą zmiennych argumentów?Lista funkcji abstrakcyjnych i zmiennych

Podaj przykład, jeśli to możliwe.

+2

proszę dodać prosty przykład kodu pseudo, co chcesz robić. –

Odpowiedz

11

Tak, jest to możliwe z zasady. Przykład znajduje się poniżej. Możesz zobaczyć wyjście here.

Czytaj także o zmiennych argumentów lista here i here

#include <iostream> 
#include <cstdarg> 

using namespace std; 


class AbstractClass{ 

public: 

    virtual double average(int num, ...) = 0; 


}; 


class ConcreteClass : public AbstractClass{ 
public: 

    virtual double average(int num, ...) 
    { 
     va_list arguments;      // A place to store the list of arguments 
     double sum = 0; 

     va_start (arguments, num);   // Initializing arguments to store all values after num 
     for (int x = 0; x < num; x++)  // Loop until all numbers are added 
     sum += va_arg (arguments, double); // Adds the next value in argument list to sum. 
     va_end (arguments);     // Cleans up the list 

     return sum/num;      // Returns the average 
    } 



}; 



int main() 
{ 
    AbstractClass* interface = new ConcreteClass(); 
    cout << interface->average(3 , 20 ,30 , 40); 

    return 0; 
} 
Powiązane problemy