Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从集合中获取信息<;MyClass>;迈塞特_C++_Class_Static_Set - Fatal编程技术网

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()
a
const
方法(无论如何都应该是这样)。我没有调用
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()