Tôi đang chơi với C++ 11 để giải trí. Tôi đang tự hỏi tại sao điều này xảy ra:sử dụng các biến phạm vi trong biểu thức lambda C++ 11
//...
std::vector<P_EndPoint> agents;
P_CommunicationProtocol requestPacket;
//...
bool repeated = std::any_of(agents.begin(), agents.end(),
[](P_EndPoint i)->bool
{return requestPacket.identity().id()==i.id();});
Compilation chấm dứt với lỗi này:
error: 'requestPacket' has not been declared
Đó là tuyên bố trước đó trong mã. Tôi đã thử ::requestPacke
và nó cũng không hoạt động.
Làm cách nào để sử dụng biến phạm vi bên ngoài bên trong hàm lambda?
Chúng nằm trong bên một phương thức của một lớp. Đó không phải là một danh hiệu tốt, có lẽ tôi nên thay đổi nó thành 'ngoài phạm vi hiện tại' ... –