TimestampedConatiner.hpp:
#ifndef TIMESTAMPEDCONTAINER_HPP_
#define TIMESTAMPEDCONTAINER_HPP_
using namespace std;
#include<string>
#include <ctime>
template <class k, class d>
class timestampedContainer
{
private:
struct elements
{
k keyType;
d dataType;
string timeStamp;
};
int position;
int size;
elements * containerPtr;
public:
timestampedContainer(int);
void insertElement(k,d);
void getElement(int, k, d, string);
void deleteContainer();
~timestampedContainer();
};
template<class k, class d>
timestampedContainer<k, d>::timestampedContainer(int size)
{
position = 0;
containerPtr = new elements[size];
}
template<class k, class d>
void timestampedContainer<k, d>::insertElement(k, d)
{
if(position <= size)
{
containerPtr[position] = elements(k, d);
position++;
}
}
#endif
当我尝试将参数复制到元素结构数组中时,错误会在插入元素函数中弹出。我的通话方式有问题吗?该错误的确切含义是什么?
答案 0 :(得分:0)
表达式elements(k, d)
有两个问题。
k
和d
是类型。因此,elements(k, d)
毫无意义。elements
没有显式定义的构造函数。因此,您不能使用类似构造函数的调用来构造该类型的对象。您可能想使用类似以下内容的东西:
template<class kType, class dType>
void timestampedContainer<kType, dType>::insertElement(kType k, dType d)
{
if(position <= size)
{
containerPtr[position] = {k, d, ""};
position++;
}
}