職場で新しいプロジェクトを作成するたびに、私はテンプレートを使って問題にぶつかります。たとえば、新しいクラスを作成し、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と呼ばれます。プログラムを実行すると、テンプレートファイルにエラーが表示されます。 "テーブルには型が指定されていません"この問題を解決するにはどうすればよいですか?
を;'それは私を与えますこのスコープでは表が宣言されていないというエラーが発生しました。この問題を解決するにはどうすればよいですか? – user2896120
まあ、 'main_savitch_12A :: table h1;のようにネームスペースを最初に扱わなければなりません。答えてくれてありがとうございます。すぐにお答えします。 –
user2896120
' main_savitch_12A :: table h1; ' –
Amadeus