2012-02-21 17 views
6

可変引数リストを持つ抽象関数を定義することができるかどうか知りたい抽象クラスがありますか?抽象関数と可変引数リスト

可能であれば、私に例を挙げてください。

+2

を読んで、あなたがやりたいものの簡単な擬似コード例を追加してください。 –

答えて

11

はい、原則として可能です。 例を次に示します。 出力はhereです。

また、可変引数リストについてherehere

#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; 
} 
関連する問題