比方說,我有帶有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'要求。 –