Я новичок в C ++, так что терпите меня.У меня есть универсальный класс с именем A. A имеет вложенный класс с именем B. A содержит метод с именем getB (), который должен возвращать новый экземпляр B. Однако я не могу получить свой код для компиляции.Вот как это выглядит: #include
Ah
template <class E>
class A {
public:
class B {
public:
int data;
};
B * getB();
};
A.cpp
#include "A.h"
template <class E>
A<E>::B * A::getB() {
return new B();
}
Когда я пытаюсь скомпилировать это, я получаю следующую ошибку:
error: expected constructor, destructor, or type conversion before '*' token
Кто-нибудь знает, что я делаю неправильно?
Спасибо,
Спираль
ОБНОВЛЕНИЕ:
Спасибо забыстрые ответы всем.У меня все еще есть небольшие проблемы с получением этой работы.После принятия предложений, перечисленных здесь, у меня есть что-то вроде этого:
Ах
template <class E>
class A {
public:
class B {
public:
int data;
};
B * getB();
};
template <class E>
typename A<E>::B * A<E>::getB() {
return new B();
}
class C {
};
Однако, когда я пытаюсь использовать это из основного, я получаю ошибку.Вот мой основной метод:
main.cpp
#include "A.h"
int main(int argc, char *argv[])
{
A<C> *a = new A<C>();
A<C>::B *b = a.getB();
}
Когда я пытаюсь скомпилировать это, я получаю следующую ошибку:
error: request for member 'getB' in 'a', which is of non-class type 'A<C>*'
Еще раз спасибо за быстрыйответы.
спирали