地图和操作员超载C
Map and operator overloading c++
我知道这可能是一个愚蠢的问题,但我对stl.我有以下问题。我正在尝试声明地图&let;cstudent,double>,当我尝试为该地图制作一个设置器时,我会收到以下错误" no oterator" ="匹配这些操作数",我在csubject类中声明了操作员'='。如果您可以帮助我,我会是非常感谢。感谢您的建议!
class CStudent
{
....
CStudent& operator = (const CStudent& rhs)
{
this->m_szFakultetNumber = rhs.m_szFakultetNumber;
this->m_szSpecialnost = rhs.m_szSpecialnost;
this->SetName(rhs.GetName());
this->SetEGN(rhs.GetEGN());
return *this;
}
};
class CSubject
{
private:
std::string m_szDisciplineName;
std::map<std::unique_ptr<CStudent>, unsigned>m_mapOStudentGrade;
public:
void SetDisciplineName(const std::string szDisciplineName)
{
m_szDisciplineName = szDisciplineName;
}
void SetStudentGrade(const std::map<std::unique_ptr<CStudent>, double>mapOStudentGrade)
{
m_mapOStudentGrade = mapOStudentGrade;
}
};
std::map<std::unique_ptr<CStudent>, unsigned>
是与 std::map<std::unique_ptr<CStudent>, double>
不同的,无关的类型。您需要选择其中之一,然后坚持下去。
请注意,除了阻止您移动分配m_mapOStudentGrade
之外,mapOStudentGrade
参数符合CC_4参数没有任何作用。您需要这样做,因为您的std::unique_ptr<CStudent>
无法复制。
还请注意,您将无法在地图中查找项目,因为任何外部std::unique_ptr<CStudent>
S永远不会等于地图中的内容。您的示例不包含任何尝试,因此对您来说可能不是问题。
相关文章:
- 二进制超载操作员=
- GLM超载操作员用于地图不起作用
- 使用超载操作员可以实现另一个操作员超载
- 超载操作员|用于固定尺寸的数组
- 超载<<操作员意外行为?
- 实施超载操作员的麻烦
- 如何超载操作员 如果调用对象不是类对象
- 如何使用向量将类对象存储在超载操作员中
- 在课堂上超载I/O操作员的奇怪行为
- 超载操作员 *
- 超载操作员&lt;&lt; - 必须是二进制操作员
- 超载操作员 仅适用于类的特定情况
- AT()和超载操作员[] C 之间的差异
- 为什么我不能超载 *操作员
- 多个操作数,用于超载 *操作员
- MINGW中的全局超载操作员新/删除
- 超载操作员问题C++
- C 超载操作员问题
- 当我使用STL集时,我应该超载==操作员吗?
- C 我应该超载操作员