ultimatepp/tutorial/Ntl07/Ntl07.cpp
cxl 0e04c59abc cpp11 branch - committing the merge (rest of it)
git-svn-id: svn://ultimatepp.org/upp/trunk@7048 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2014-03-16 16:35:29 +00:00

53 lines
803 B
C++

#include <Core/Core.h>
using namespace Upp;
struct Number {
virtual double Get() const = 0;
String ToString() const { return AsString(Get()); }
virtual ~Number() {}
};
struct Integer : public Number {
int n;
virtual double Get() const { return n; }
Integer() {}
};
struct Double : public Number {
double n;
virtual double Get() const { return n; }
Double() {}
};
bool operator<(const Number& a, const Number& b)
{
return a.Get() < b.Get();
}
CONSOLE_APP_MAIN
{
BiVector<int> n;
n.AddHead(1);
n.AddTail(2);
n.AddHead(3);
n.AddTail(4);
DUMPC(n);
n.DropHead();
DUMPC(n);
n.DropTail();
DUMPC(n);
BiArray<Number> num;
num.CreateHead<Integer>().n = 3;
num.CreateTail<Double>().n = 15.5;
num.CreateHead<Double>().n = 2.23;
num.CreateTail<Integer>().n = 2;
DUMPC(num);
}