C++ & Templates

Gast #697910
Lesenswert?

Hallo,

folgendes Problem:

Ich habe eine Klasse für Baumknoten deren Key ich variabel halten 
möchte:

template<class TKey> class MyCNode
{
    ...
}

Ein Anwender kann diese Klasse als Basisklasse für seine Daten 
verwenden.

Der Baum sieht nun wie folgt aus:

template<template<class TKey>class MyCNode> class MyCTree
{
    ...
}

Wenn ich jetzt in der Klasse eine Methode deklariere, so kennt er laut 
Meldung TKey nicht:

int insertNode(MyCNode<TKey>* const pNode);

Wie würdet ihr das Interface der Baumklasse gestalten, um zu erzwingen, 
dass nur von MyCNode abgeleitete Klassen als Templateargument akzeptiert 
werden?


Gruß,
Alex
Gast #697944
Lesenswert?

Ich will aber nicht sagen:

Hier ist eine Baumklasse die irgendeinen Template-Parameter hat.

Sondern:

Hier ist eine Baumklasse, die als Template-Parameter den Typen MyCNode 
(oder eine davon abgeleitete Klasse) mit dem Template-Parameter TKey 
hat.
Gast #698095
Lesenswert?

1
template<class TKey> class MyCNode
2
{
3
public:
4
    typedef TKey KeyType;
5
}
6

7
template<typename Node>
8
class Tree
9
{
10
public:
11
   void getNode(Node::KeyType Key, Node& existingNode);
12
};

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren