错误 C2338 THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY PCL D:\PCL 1.12.1\3rdParty\Eigen\eigen3\Eigen\src\Core\AssignEvaluator.h 886
时间: 2023-09-06 14:10:59 浏览: 86
这个错误信息是出现在使用 PCL 库时的编译错误。它的意思是在 AssignEvaluator.h 的第 886 行,THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY,即“此表达式不是左值,它是只读的”。这个错误通常是由于尝试修改一个只读的变量或对象而导致的。可以检查代码中是否有对只读变量的修改,或者尝试使用 const_cast 将只读变量转换为可写变量。
相关问题
cannot bind non-const lvalue reference of type ‘std::shared_ptr<float>
这个错误通常出现在试图将一个非常数左值引用绑定到类型为 `std::shared_ptr<float>` 的参数上。`std::shared_ptr` 是一个智能指针类,它拥有对动态分配的对象的共享所有权。
在 C++ 中,非常数左值引用(即 `&`)需要绑定到一个可以修改的对象上。然而,`std::shared_ptr` 的拷贝构造函数和拷贝赋值运算符都要求传入的参数是一个常数引用。
为了解决这个问题,你可以将参数类型更改为 `const std::shared_ptr<float>&`,或者使用值传递而不是引用传递。具体取决于你的需求和设计。
例如,如果你有一个函数 `void foo(const std::shared_ptr<float>& ptr)`,你可以将 `std::shared_ptr<float>` 对象传递给它:
```cpp
std::shared_ptr<float> ptr = std::make_shared<float>(3.14);
foo(ptr);
```
或者,你可以通过值传递来避免错误:
```cpp
void foo(std::shared_ptr<float> ptr) {
// 在函数内部使用 ptr
}
std::shared_ptr<float> ptr = std::make_shared<float>(3.14);
foo(ptr);
```
希望对你有所帮助!如果还有其他问题,请随时提问。
api\modbus_data.c(777): error: #158: expression must be an lvalue or a function designator
这个错误提示通常是指在C语言中,你在一个表达式中使用了一个不可修改的值,而这个表达式要求一个可修改的左值(lvalue)或函数设计者(function designator)。可能的原因有以下几种:
1. 你在一个只读的变量上尝试进行赋值操作。只读变量是不可修改的,你需要使用可修改的变量。
2. 你在一个常量上尝试进行赋值操作。常量也是不可修改的,你需要使用可修改的变量。
3. 你在一个函数调用上尝试进行赋值操作。函数调用的返回值是一个临时的值,你不能在其上进行赋值操作。
请检查你的代码并确保在表达式中使用可修改的左值或函数设计者。如果需要,你可以提供相关的代码片段,以便我能够更具体地帮助你解决问题。