#include <iostream>
struct clBaseSegment {};
template <class T>
class structtemplatetest : public clBaseSegment, public T{
};
typedef struct irgendwas{
char eins[5];
char zwei[5];
char drei[5];
}irgendwas;
class tester : public structtemplatetest<irgendwas>{
public:
tester(irgendwas const& iw)
{
*static_cast<irgendwas*>(this) = iw;
};
};
int main()
{
irgendwas iw;
iw.eins[0] = 'a';
iw.zwei[0] = 'b';
iw.drei[0] = 'c';
tester tt(iw);
std::cout << tt.eins[0] << " " << tt.zwei[0] << " " << tt.drei[0] << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IGNsQmFzZVNlZ21lbnQge307Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4gCmNsYXNzIHN0cnVjdHRlbXBsYXRldGVzdCA6IHB1YmxpYyBjbEJhc2VTZWdtZW50LCBwdWJsaWMgIFR7IAogICAKfTsgCiAgIAp0eXBlZGVmIHN0cnVjdCBpcmdlbmR3YXN7IApjaGFyIGVpbnNbNV07IApjaGFyIHp3ZWlbNV07IApjaGFyIGRyZWlbNV07IAp9aXJnZW5kd2FzOyAKICAgCmNsYXNzIHRlc3RlciA6IHB1YmxpYyBzdHJ1Y3R0ZW1wbGF0ZXRlc3Q8aXJnZW5kd2FzPnsgCiAgICBwdWJsaWM6IAogICAgIHRlc3RlcihpcmdlbmR3YXMgY29uc3QmIGl3KQogICAgIHsKICAgICAgICAqc3RhdGljX2Nhc3Q8aXJnZW5kd2FzKj4odGhpcykgPSBpdzsKICAgICB9OyAKfTsKCmludCBtYWluKCkKewogICAgaXJnZW5kd2FzIGl3OwogICAgaXcuZWluc1swXSA9ICdhJzsKICAgIGl3Lnp3ZWlbMF0gPSAnYic7CiAgICBpdy5kcmVpWzBdID0gJ2MnOwogICAgdGVzdGVyIHR0KGl3KTsKICAgIHN0ZDo6Y291dCA8PCB0dC5laW5zWzBdIDw8ICIgIiA8PCB0dC56d2VpWzBdIDw8ICIgIiA8PCB0dC5kcmVpWzBdIDw8ICJcbiI7Cn0K