#include <iostream> using namespace std; #define WRITE_LL_CLASS(T) \ class Node_ ## T { \ public: \ T data; \ Node_ ## T * next; \ Node_ ## T (T d, Node_ ## T * n) :data(d), next(n) { } \ \ T printAndSum() { \ cout << data << endl; \ if (next == NULL) return data; \ else return data + next->printAndSum(); \ } \ }; WRITE_LL_CLASS(float) WRITE_LL_CLASS(int) int main() { Node_float* fhead = NULL; Node_int* ihead = NULL; float x; while (cin >> x) { fhead = new Node_float(x, fhead); ihead = new Node_int((int)x, ihead); } cout << "Floating sum: " << fhead->printAndSum() << endl << endl; cout << "Int sum: " << ihead->printAndSum() << endl << endl; return 0; }