Re: nest templates class problem
 
Eddy Xu <eddyxu@gmail.com> wrote:
Now I have two template classes:
template<
        typename Key,
        typename Value
        typename Op
        >
class Node{
    ....
public:
     int append(Node *node) { return op_.append(node));
....
private:
   Op op_;
}
And I wish to  define a Node_XXX_Children to separate the operations
on node children, so that
I can use Node<Key, Value, Node_Map_Childrend>, and etc, to provide
different strategy to deal with child node.
template<
        typename Key,
        >
Node_Map_Children{
public:
      int append(Node *node) { ctn_[node->key] = node; return 0;}
private:
     std::map<Key, Node*> ctn_;
};
But it's nested template define. How can I resolve it?
Thanks for advices.
   Why not mix classic OOP and templates derived from a base class.
then the 'tree' can contain Children containing nodes of Children
constaining nodes or a mixture of Op nodes and Children containing
nodes.
Not tested but something like this.
template <class Key>
struct node_base
{
    Key key;
    virtual ~node_base(){}
    virtual int append(node_base *)=0;
};
template <class Key,class Op>
class op_node:public node_base<Key>
{
         Op op;
public:
    explicit op_node(const Op &a):op(a)
    int append(node_base * p)
    {
         return op(o);
    }
};
template <class Key>
class parent_node:public node_base<Key>
{
    std::map<Key,node_base *> children;
public:
    int append (node_base * p)
    {
        children[p->key] - p;
        return 0;
    }
};
etc.
-- 
      [ See http://www.gotw.ca/resources/clcm.htm for info about ]
      [ comp.lang.c++.moderated.    First time posters: Do this! ]