将参数复制到结构元素数组时,“)”标记之前的主表达式

时间:2018-11-28 04:25:05

标签: c++

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

当我尝试将参数复制到元素结构数组中时,错误会在插入元素函数中弹出。我的通话方式有问题吗?该错误的确切含义是什么?

1 个答案:

答案 0 :(得分:0)

表达式elements(k, d)有两个问题。

  1. kd是类型。因此,elements(k, d)毫无意义。
  2. elements没有显式定义的构造函数。因此,您不能使用类似构造函数的调用来构造该类型的对象。

您可能想使用类似以下内容的东西:

template<class kType, class dType>
void timestampedContainer<kType, dType>::insertElement(kType k, dType d)
{
    if(position <= size)
    {
        containerPtr[position] = {k, d, ""};
        position++;
    }
}