gpt4 book ai didi

c++ - 编译错误 C2662

转载 作者:行者123 更新时间:2023-11-30 01:17:15 25 4
gpt4 key购买 nike

<分区>

我试图将一个对象作为引用传递给一个函数,该函数接受该对象作为 const 但是编译器抛出:

error C2662: 'const int DataPacket::GetData(void)': cannot convert 'this' pointer from 'const DataPacket' to 'DataPacket &'

IntelliSense 说:

the object has type qualifiers that are not compatible with the member function
object type is: const DataPacket

我对代码进行了测试以演示问题:

#include <iostream>
#include <functional>

class DataPacket
{
int SomeVar;
public:
DataPacket(int InitialData)
{
SomeVar = InitialData;
}

const int GetData()
{
return SomeVar;
}
};

void ProcessPacket(const DataPacket& Packet)
{
std::cout << Packet.GetData() << std::endl;
}

int main()
{
std::function<void(const DataPacket& Packet)> f_Callback;
f_Callback = ProcessPacket;

while (true)
{
f_Callback(DataPacket(10));
}

}

基本上我有一个 STD 函数,用户可以将其设置为使用他们自己的回调函数。当新数据包到达时,较低级别的类会创建 DataPacket 类型的对象。然后我想将该对象作为常量引用传递给回调函数,这样就不会复制整个对象并限制用户更改原始对象。

这是怎么回事?如何将 DataPacket 作为 const 引用传递给 f_Callback?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com