【发布时间】:2013-08-18 01:09:54
【问题描述】:
我在尝试使用以下代码在 std::vector 中插入 std::pair 时遇到问题:
template <class R>
class AVectorContainner
{
public:
AVectorContainner()
{
mVector= new std::vector<entry>;
}
typedef std::pair<int ,R *> entry;
void insert(R* aPointer, int aID)
{
entry aEntry;
aEntry=std::make_pair(aID,aPointer );
mVector->push_back(aEntry);
}
private:
std::vector<entry> * mVector;
}
这是主文件的一部分,我声明了一个类的指针,然后在模板类的初始化中使用它。
在main.cpp中:
int main()
{
SomeType * aTipe= new SomeType;
int aID=1;
AVectorContainer<SomeType> * aContainer= new AVectorContainer;
aContainer->insert(aTipe,aId);//error line
delete aTipe;
delete aContainer;
return 0;
}
编译器输出:
error: non-static reference member 'const int& std::pair<const int&, SomeType *>::first', can't use default assignment operator
error: value-initialization of reference type 'const int&'
【问题讨论】:
-
这段代码中有太多
new。 -
... 而不是要看到的复制 ctor 或赋值运算符。呃。
-
那么,Ricardo,您是来自 Java 还是 C#?
-
@Yakk 你不应该修复 OP 的拼写错误,除非 OP 自己修复它们。
-
@Ricardo_arg -1 显示真实代码,否则会猜测太多。
标签: c++ templates stl stdvector std-pair