This is indeed a very exotic definition of a linked list. And as far as I can see it contains many errors. The one you are probably stumbling about is:
public: void Add(T ForAdd, int pos)
{
...
((*this)[pos]) = &ForAdd;}
You are taking the address of the parameter ForAdd, which is transferred by value and hence just a temporary variable that will go out of scope as soon as you return from the function. And you are assing this address to the current pointer of you linked list.
Besides that I see many other strange things.
- the members next and prev are nowhere assigned to, so your list will only contain a single element
- the constructor is missing so all the members are not initialized
- you don't distiguish between the list and a node of the list and are trying to use the same class for both
- the CountFirst function is defined recursively (an absolute no go for longer lists) and as it stands will access prev->prev-> which is one step too much. You forgot to add 1 and hence CountFist will always return 0 if doesn't crash first.
I could continue for a while here. Why don't you take a look at the implementation of other linked lists and learn from them. That will make your life a lot easier and your learning progress will be a lot faster.