【发布时间】:2011-12-11 22:17:28
【问题描述】:
假设我有
#include <string>
#include <vector>
using namespace std;
struct Student
{
const string name;
int grade;
Student(const string &name) : name(name) { }
};
那么,我该如何保留学生的向量?
int main()
{
vector<Student> v;
// error C2582: 'operator =' function is unavailable in 'Student'
v.push_back(Student("john"));
}
有没有办法做到这一点,或者我必须在堆上分配所有学生,并改为存储指向每个学生的指针?
【问题讨论】:
-
这似乎与 VC 2010 进行编译和链接。您能否提供有关您的环境的更多信息?这是一个重现编译失败的完整测试用例吗?
-
@DRH:我在 VC 2008 上,抱歉。是的,这就是整个测试用例。
-
虽然对于其他操作,您需要赋值运算符,但我想不出
push_back有这个要求的任何可能原因......再说一次,可能是实现检查了@987654324 @要求。