C++ 从集合中获取信息<;MyClass>;迈塞特
所以我有C++ 从集合中获取信息<;MyClass>;迈塞特,c++,class,static,set,C++,Class,Static,Set,所以我有 set<MyClass> mySet; 这两种方法都不适用(是的,我知道它们本质上是完全相同的),但我可以从一些索引中获得这些信息,比如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
set<MyClass> mySet;
这两种方法都不适用(是的,我知道它们本质上是完全相同的),但我可以从一些索引中获得这些信息,比如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
std::set中的元素在插入到集合中后是不可变的。当您取消对迭代器的引用(如->)时,它将返回您放入集合中的对象的常量引用。另一方面,getCompareCount()的定义是一个非常量实例函数,这意味着它只能在类的非常量实例上调用。定义函数,如下所示可以解决您的问题
int MyClass::getCompareCount() const
{
return compareCount;
}
顺便说一句,由于compareCount是一个静态int,您可能也希望将函数定义为静态的,这样您就可以使用类来调用它,而不必获取实例来调用它
static int MyClass::getCompareCount()
{
return compareCount;
}
//To Call it
MyClass::getCompareCount()
你能给我们看一下
getCompareCount()
的声明吗?为你添加了这个声明,你可能正在调用int count=mySet.begin()->getCompareCount()代码>从const
函数内部?如果是这样,请将getCompareCount()
aconst
方法(无论如何都应该是这样)。我没有调用int count=mySet.begin()->getCompareCount()代码>从常量函数内部。我还做了getCompareCount常量。谢谢,我没能让第一个运行,但让函数静态运行。
int MyClass::getCompareCount()
{
return compareCount;
}
int MyClass::getCompareCount() const
{
return compareCount;
}
static int MyClass::getCompareCount()
{
return compareCount;
}
//To Call it
MyClass::getCompareCount()