Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.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++ 通过常量成员函数对向量进行排序_C++ - Fatal编程技术网

C++ 通过常量成员函数对向量进行排序

C++ 通过常量成员函数对向量进行排序,c++,C++,我试图使用lambda函数对自定义类的向量进行排序,但在某个地方我得到了一个丢弃的const,我不理解 我已经试着在这里寻找答案,虽然许多人问了几乎完全相同的问题,但似乎没有一个是相同的问题。我不禁止移动构造函数,也不调用排序中的非常量成员/成员函数(至少我知道。显然我做错了)。我能想到的最接近的方法是返回非常量成员的值,但我是通过常量函数来实现的,我明确地希望这样做。我希望面向公众的成员功能不能改变任何东西,而面向私人的成员可以在内部改变(但不能通过任何面向公众的功能)。我正在做的唯一一件非常

我试图使用lambda函数对自定义类的向量进行排序,但在某个地方我得到了一个丢弃的
const
,我不理解

我已经试着在这里寻找答案,虽然许多人问了几乎完全相同的问题,但似乎没有一个是相同的问题。我不禁止移动构造函数,也不调用排序中的非常量成员/成员函数(至少我知道。显然我做错了)。我能想到的最接近的方法是返回非常量成员的值,但我是通过常量函数来实现的,我明确地希望这样做。我希望面向公众的成员功能不能改变任何东西,而面向私人的成员可以在内部改变(但不能通过任何面向公众的功能)。我正在做的唯一一件非常奇怪的事情(我不认为这对我有任何影响)是我的类是不可复制的,并且有一个不可复制的成员(move是可以的)

class-MyClass{
公众:
const SortByThis(){return internal_value;}//Edit:正如接受的答案中所指出的,这个声明就是问题所在。
MyClass(SortByThis,BigNonCopyableDataStrcuture);
MyClass(MyClass&)=delete;//不允许复制。只能移动。
私人:
int内部_值;
BigNonCopyableDataStructure\u t big\u结构;
}
std::vec;
DoFillVec(vec)//Vec现在有许多项,但未排序
std::sort(vec.begin(),vec.end(),[](constmyclass&lhs,constmyclass&rhs){返回lhs.SortByThis()

我希望这能对向量进行排序,但编译器却抱怨我做错了什么,我不知道我到底做错了什么。在这一点上,我只能在编译之前玩弄东西(这不是一种恶心的感觉)。

SortByThis
声明不正确。
const
在函数之后,而不是之前:

int SortByThis() const { return internal_value; }

让我们知道这是否解决了问题

我想你的意思是说
int SortByThis()const{return internal_value;}
。但是在某个地方我得到了一个我不理解的被丢弃的const
const SortByThis(){return internal_value;}
需要是
int SortByThis()const{return internal_value;}
谢谢你们。我确实声明了一个常量返回类型而不是常量函数。。。哎呀,你为什么把答案放在这个问题里?现在,您可能会问“这是一个不起作用的代码:。它为什么不起作用?”这是一个很好的观点。我会把它还原,这样我的愚蠢行为对未来的谷歌用户更有帮助。谢谢。我的阅读障碍延伸到我的软件。。。我花在这上面的时间比我应该花的时间长得多。我保证我理解常量返回类型和常量函数之间的区别(我只是一直在搞砸它们的使用)。。。非常感谢。我会尽快接受你的回答(5分钟计时器)。很高兴我能帮上忙!让我知道是否还有其他问题
int SortByThis() const { return internal_value; }