模板文件在CodeLite中无法正常工作?

时间:2016-11-30 20:38:00

标签: c++ templates codelite

每次我在工作场所创建新项目时,都会遇到模板问题。例如,我将创建一个新类,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;我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

在模板实现中,您缺少命名空间,请使用:

INSERT INTO ... SELECT * FROM ...