Каждый раз, когда я создаю новый проект на своем рабочем месте, я сталкиваюсь с проблемой с шаблонами. Например, я создам новый класс, который CodeLite создаст файл .h и файл .cpp для меня, а затем я изменю этот .cpp-файл на .template, переименовав файл. Иногда это работает, а иногда нет. Иногда мне приходится убирать рабочее место, чтобы он работал, иногда мне нужно выйти из CodeLite и снова открыть его. На этот раз эти решения не работают для меня, но, может быть, я чего-то не хватает. Вот мой код:Файл шаблона работает неправильно в CodeLite?
.h файл
#ifndef TABLE1_H
#define TABLE1_H
#include <cstdlib> // Provides size_t
namespace main_savitch_12A
{
template <class RecordType>
class table
{
public:
// MEMBER CONSTANT -- See Appendix E if this fails to compile.
static const std::size_t CAPACITY = 811;
// CONSTRUCTOR
table();
// MODIFICATION MEMBER FUNCTIONS
void insert(const RecordType& entry);
void remove(int key);
// CONSTANT MEMBER FUNCTIONS
bool is_present(int key) const;
void find(int key, bool& found, RecordType& result) const;
std::size_t size() const { return used; }
private:
// MEMBER CONSTANTS -- These are used in the key field of special records.
static const int NEVER_USED = -1;
static const int PREVIOUSLY_USED = -2;
// MEMBER VARIABLES
RecordType data[CAPACITY];
std::size_t used;
// HELPER FUNCTIONS
std::size_t hash(int key) const;
std::size_t next_index(std::size_t index) const;
void find_index(int key, bool& found, std::size_t& index) const;
bool never_used(std::size_t index) const;
bool is_vacant(std::size_t index) const;
};
}
#include "table1.template" // Include the implementation.
#endif
.template файл
template<class RecordType>
table<RecordType>::table(){
used = 32;
}
основной файл
#include <stdio.h>
#include "table1.h"
int main(int argc, char **argv)
{
printf("hello world\n");
return 0;
}
Мой т emplate и мои .h файлы называются table1. Ошибка, которую я получаю при запуске программы, находится в файле шаблона. Он гласит: «таблица не называет тип» Как я могу исправить эту проблему?
Это работает правильно, но когда я пытаюсь создать экземпляр таблицы в главном файле с помощью 'таблицы h1,' это дает мне столбец с ошибкой не был объявлен в этой области. Как исправить эту проблему? –
user2896120
Хм, мне нужно сначала обратиться к пространству имен, как 'main_savitch_12A :: table h1;' Спасибо за ваш ответ. Я дам вам лучший ответ в ближайшее время. –
user2896120
Do 'main_savitch_12A :: table h1;' –
Amadeus