C++でサークルリストを書いています。これが私のコードです
class CList
{
private:
class ListNode
{
public:
int v;
ListNode *prev;
ListNode *next;
/*constructor*/
};
ListNode *_tail;
public:
typedef const void* const Index;//need a way to represent something like 'index' or 'position'
CList():_tail(0)
{
}
void print()const;
void insert(Index pos, const int &value);
Index find(/*some condition*/);
};
ネストされたクラスは実装に使用されるだけなので、のユーザーがアクセスできListNode
ないようにします。しかし、それはリストなので、ユーザーは新しいノードをどこかの位置に挿入できるので、メンバーを追加します(インデックスは変更しないでください!)。しかし、それはばかげているので、手動でキャストする必要があります。これを行うエレガントな方法はありますか?または、ネストされたクラスを使用することは、物乞いの間違いです。CList
ListNode
Index
ListNode*