* A L, on 25.08.2010 08:17:
> I have an abstract class:
>
> class Attribute { /* ...*/ };
>
> Now I have another class:
>
> template<typename T, typename U>
> class Mgr
> {
> static U *create(const std::string k, std::string v)
> {
> static T *p = 0;
> if (!p)
> {
> p = new T();
> }
Above is unnecessary because C++ does it for you:
static T *p = new T();
> T&r = *p;
> U *a = const_cast<U*>(r.get(k));
This const_cast seems pretty dangerous.
> return a;
> }
> };
>
> Both of these classes are declared/defined in different header files.
>
> The problem is that the constructors of Attribute class are private so
> I have to declare the Mgr class a friend of Attribute. That's what I
> have a problem doing - I am having a difficult time with the template
> syntax when it comes to declaring a template class (with two template
> parameters) a friend in a non-template class - I am getting lots of
> compilation errors on the friend template declaration. Can any kind
> sole tell me how I am supposed to do it? Declare a template class with
> two template parameters a friend in a non-template class???
Design Attribute as a singleton.
Cheers & hth.,
- Alf
--
blog at <url: http://alfps.wordpress.com>
|