#include <iostream>
using namespace std;
class interface{
public:
virtual int getAge()=0;
virtual int getAge1()=0;
};
class person:virtual public interface{
public:
person(int a){
age = a;
std::cout<<"age:"<<age<<endl;
}
int getAge(){
return age;
}
private:
int age;
};
class person1:virtual public interface{
public:
person1(int a){
age1 = a;
std::cout<<"age1:"<<age1<<endl;
}
int getAge1(){
return age1+12;
}
private:
int age1;
};
template<typename ... _AttributeExtensions>
class student
:virtual public _AttributeExtensions...{
public:
student(int a);
~student(){}
int n;
};
template <typename ... _AttributeExtensions>
student<_AttributeExtensions...>::student(int a):n(a),
_AttributeExtensions(a)... {
}
int main(){
student<person,person1> s(22);
std::cout<<"age1:"<<s.getAge1()<<std::endl;
std::cout<<"age:"<<s.getAge()<<std::endl;
return 0;
}
ygy@ygy-VirtualBox:~/work/tmp$ g++ c.cpp
ygy@ygy-VirtualBox:~/work/tmp$ ./a.out
age:22
age1:22
age1:34
age:22