#c #templates
#c #шаблоны
Вопрос:
У меня есть класс, определенный на c . И у меня есть шаблон внутри его файла .h. И в этом шаблоне несколько локальных классов, определенных в файле .cxx.
содержимое файла.h
namespace test
{
Class a
{
template<classT>
{
abc xyz = //some initialization
}
};
}
содержимое файла.cxx
#include "a.h"
namespace test
{
class abc
{
};
}
когда я компилирую этот файл, он компилируется нормально. Но когда я пытаюсь использовать шаблон, который я определил в a.h . , он выдает мне следующую ошибку.
ошибка C3861: ‘abc’: идентификатор не найден
Комментарии:
1. Почему вы объявляете abc в.cxx? Вы должны поместить это в файл заголовка и загрузить его перед вашим шаблоном, который его использует.
2. Почему
class abc
находится вa.cxx
, а не в заголовочном файле? И почему расширение файла такоеcxx
, неcpp
?3. Вам нужно поместить большую стрелку, указывающую на строку кода во фрагменте, который не компилируется.
4. Этот код не будет компилироваться. Опубликуйте правильный код. Что такое
template<classT>
?
Ответ №1:
Сделайте прямое объявление класса abc, например:
namespace test
{
class abc;
class a
{
template<classT>
{
abc xyz = //some initialization
}
};
}
Ответ №2:
Похоже, вы пропустили объявление class abc
в файле .h.
И вы ставите Class a
вместо class a
.