Нет, вам не нужно использовать указатель. В этом случае вы можете в равной степени использовать ссылку или указатель.
Вставленный вами код должен работать и работает в g ++ 4.4 и Visual Studio 2010 .... кроме пропущенных точек с запятой после объявлений классов.
Полагаю, возможно, ваш код здесь не совпадает с кодом, который вы компилируете.
В частности, вы случайно сделали это в коде?
class DataType /*: public AbstractDataType*/ {
public:
virtual int getInfo() { };
};