Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
412 views
in Technique[技术] by (71.8m points)

c++ - Abstract functions and variable arguments list

I have an abstract class an I like to know if it's possible to define an abstract function with variable arguments list?

Give me an example if it's possible.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Yes, it is possible in principle. An example follows below. You can see the output here.

Also read about variable arguments list here and 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;
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.8k users

...