问题遇到的现象和发生背景
如何在C++用宏递归生成不断派生的类
不要使用模板,这里本意就是要用宏!模板最多500层,继承至少可以1000层
问题相关代码,请勿粘贴截图
class a0 {
int num;
public:
a0(int n):num(n){}
friend ostream& operator<<(ostream& os, a0& A) {
os << A.num;
return os;
}
};
class a1 :public a0 {
public:
a1(int n) :a0(n) {}
friend ostream& operator<<(ostream& os, a1& A) {
os << (a0&)A;
return os;
}
};
class a2 :public a1 {
public:
a2(int n) :a1(n) {}
friend ostream& operator<<(ostream& os, a2& A) {
os << (a1&)A;
return os;
}
};
class a3 :public a2 {
public:
a3(int n) :a2(n) {}
friend ostream& operator<<(ostream& os, a3& A) {
os << (a2&)A;
return os;
}
};
class a4 :public a3 {
public:
a4(int n) :a3(n) {}
friend ostream& operator<<(ostream& os, a4& A) {
os << (a3&)A;
return os;
}
};
class a5 :public a4 {
public:
a5(int n) :a4(n) {}
friend ostream& operator<<(ostream& os, a5& A) {
os << (a4&)A;
return os;
}
};
class a6 :public a5 {
public:
a6(int n) :a5(n) {}
friend ostream& operator<<(ostream& os, a6& A) {
os << (a5&)A;
return os;
}
};
class a7 :public a6 {
public:
a7(int n) :a6(n) {}
friend ostream& operator<<(ostream& os, a7& A) {
os << (a6&)A;
return os;
}
};
class PRINT {
int n;
public:
PRINT(int m):n(m){}
friend ostream& operator<<(ostream& os, PRINT& P) {
for (int i = 1; i < P.n; i++) {
os << "class a" << i << " :public a" << i - 1 << " {\npublic:\n\ta" << i << "(int n)"<< ":a" << i - 1 << "(n){}" << endl;
os << "friend ostream& operator<<(ostream& os, a" << i << "& A){\n\t\t os << (a" << i - 1 << "&)A;\nreturn os;\n}\n};\n";
}
return os;
}
};
运行结果及报错内容
无
我的解答思路和尝试过的方法
我试图通过宏的递归来将a0之后的代码简洁的表示,但是具体的细节不知道怎么做,现在的代码是我先写了一个循环(也就是最后面部分的内容)把上面需要的代码打入记事本然后手动复制过来,缺点是代码量极大
我想要达到的结果
能在定义a0后,通过宏的递归来产生后续的类,而不是手动一个循环把代码先打出来再复制上去