«идентификатор» использует неопределенный класс

0

У меня есть следующий код:

#include <iostream>

template <class T>
class A;

int main()
{
    A<int> obj;
}

template <class T>
class A
{
public:
    A();
};

template <class T>
A<T> ::A()
{}

Мой компилятор (MS Visual Studio Update 4 Pro) дает мне следующую ошибку:

error C2079: 'obj' uses undefined class 'A<int>'

MinGW также дает мне ошибку того же значения.

В чем причина этого? Объявление класса A <T> находится перед main функцией, поэтому должно быть известно.

  • 1
    Вы должны определить класс, прежде чем использовать его.
  • 4
    @juanchopanza успокойся, я не знал этого раньше. Почему -1 ? Я думаю, что это правильный ответ - поэтому пост является ответом.
Теги:
templates

1 ответ

0
Лучший ответ

Это означает, что именно он говорит: шаблон не был определен в тот момент, когда вы пытаетесь его использовать. Определение, а не только объявление должно быть доступно для создания шаблона.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню