D.h. es wird voraussichtlich niemals einen Compiler geben, der sowas zulässt.
Ich hab mal den guten alten BCC55 und meine eingerosteten C++-Kenntnisse rausgekramt und folgendes produziert:
Code:
#include <iostream>
#include <string>
class MyClass
{
public:
int blubb;
};
class YourClass
{
public:
std::string blah;
};
template <typename T>
class TThreadedObject: public T
{
public:
TThreadedObject() { std::cout << "lock" << std::endl; };
~TThreadedObject() { std::cout << "unlock" << std::endl; };
};
int main()
{
TThreadedObject<MyClass> tb;
TThreadedObject<YourClass> ty;
tb.blubb = 42;
ty.blah = "Hallo";
std::cout << tb.blubb << std::endl;
std::cout << ty.blah << std::endl;
}
Das lässt sich compilieren, läuft und spuckt erwartungsgemäß
Code:
lock
lock
42
Hallo
unlock
unlock
aus. Ich denke, das ist vom Prinzip her, das was der OP gerne hätte. So eine Art Mixin.