比方说,我有带有const成员的结构向量?
#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
@DRH:我在VC 2008上,对不起。是的,这是整个测试案例。 – Mehrdad
虽然对于其他操作,您将需要赋值运算符,但我想不出任何可能的原因,为什么'push_back'会有这个要求......然后,可能是实现检查'Assignable'要求。 –