从集合<myclass> mySet </myclass>中获取信息

时间:2014-02-20 22:06:09

标签: c++ class static set

所以我有

set<MyClass> mySet;

在MyClass中我有一个静态int来计算发生的比较次数。我正试图从中获取这些信息,但我无法弄清楚如何。

这是我尝试过的:

set<MyClass>::iterator it = mySet.begin();
int count = it->getCompareCount();

int count = mySet.begin()->getCompareCount();

这些都不起作用(是的,我知道它们本质上是完全相同的)但我可以从像std :: list或std :: vector

这样的索引中获取信息

示例:

vector<MyClass> myVector;
for (int i = 0; i < 10; i ++)
{
    myVector.push_back(MyClass(i,"Some Name", i*2);
}
int count = myVector.at(2).getCompareCount(); //which by default is going to be 0 as no compares have taken place

任何人都可以帮助我吗? netbeans说“错误:传递'const MyClass'作为'int MyClass :: getCompareCount()的'this'参数',当我按照上面说过我做的话时,丢弃限定符[-fpermissive]”。

EDITS

getCompareCount()声明:

int MyClass::getCompareCount()
{
    return compareCount;
}

1 个答案:

答案 0 :(得分:0)

std :: set中的元素在插入集合后不可变。当您取消引用迭代器(在it-&gt;中)时,它会返回您放入集合中的对象的const引用。另一方面,getCompareCount()的定义是非const实例函数,这意味着它只能在类的非const实例上调用。定义函数,因为以下内容可以解决您的问题。

int MyClass::getCompareCount() const
{
    return compareCount;
}

顺便说一下,由于compareCount是一个静态int,你可能也希望将该函数定义为static,这样你就可以使用该类调用它,而不必让一个实例来调用它。

static int MyClass::getCompareCount()
{
    return compareCount;
}
//To Call it
MyClass::getCompareCount()
相关问题