我有一个重新定义的问题,但是我注意到我已经在.hpp文件中包括了.cpp文件,所以我的错误是再次在我的.cpp文件中包括了.hpp文件。 现在,我收到此错误,这与模板有关。 同样,在解决我的问题时,能否向我解释什么是模板类? cplusplus.com并不是那么描述。 谢谢。 :)
//implementation
template<class T>
ArrayBag<T>::ArrayBag() : item_count_(0){}
-----------------警告您现在正在实施--------------------------- < / p>
//interface
#ifndef ARRAY_BAG_H
#define ARRAY_BAG_H
#include <vector>
template<class T>
class ArrayBag
{
protected:
static const int DEFAULT_CAPACITY = 200;
T items_[DEFAULT_CAPACITY];
int item_count_;
int get_index_of_(const T& target) const;
public:
ArrayBag();
int getCurrentSize() const;
bool isEmpty() const;
//adds a new element to the end, returns true if it was successfully been added
bool add(const T& new_entry);
bool remove(const T& an_entry);
void clear();
bool contains(const T& an_entry) const;
int getFrequencyOf(const T& an_entry) const;
std::vector<T> toVector() const;
void display() const;
//overloading operators for objects
void operator+=(const ArrayBag<T>& a_bag);
void operator-=(const ArrayBag<T>& a_bag);
void operator/=(const ArrayBag<T>& a_bag);
};
#include "ArrayBag.cpp"
#endif
-------------警告您正在离开界面--------------------------- < / p>
//error
5 C:\Users\minahnoona\Desktop\ArrayBag.cpp expected constructor, destructor, or type conversion before '<' token
5 C:\Users\minahnoona\Desktop\ArrayBag.cpp expected `;' before '<' token
答案 0 :(得分:2)
请勿将您的ArrayBag.cpp
称为.cpp
文件。模板实现放在头文件中,名称应反映出来。
如果要在单独的文件中实施(严格不需要),请将其命名为ipp
或tpp
。项目系统有些东西不会尝试自行编译。
然后将其包含在.hpp
中,不要将.hpp
包含在.ipp
中。