每次我在工作场所创建新项目时,都会遇到模板问题。例如,我将创建一个新类,CodeLite将为我创建.h文件和.cpp文件,然后我将通过重命名文件将该.cpp文件更改为.template。它有时是有效的,有时也不行。有时我必须清理我的工作场所才能工作,有时我需要退出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 file
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;
}
我的模板和我的.h文件名为table1。我运行程序时遇到的错误是在模板文件中。它写着:&#34;表没有命名类型&#34;我该如何解决这个问题?
答案 0 :(得分:1)
在模板实现中,您缺少命名空间,请使用:
INSERT INTO ... SELECT * FROM ...