• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
c++ 类的函数引用 + 指针+跨线程数据传递
cmake_minimum_required(VERSION 3.0)  # 指定 CMake 的最低版本要求

project(MyProject)  # 设置项目名称

# 添加可执行文件,并指定源文件
add_executable(my_executable main.cpp)

  CMakeLists.txt

 

 

 

#include <iostream>

// 定义一个简单的类 MyClass
class MyClass {
public:
    int value;
    MyClass(int v) : value(v) {}
};

// 修改传入对象的状态,传入的是对象的副本
void modifyObjectCopy(MyClass obj) {
    obj.value = 100; // 修改传入对象的副本
}

// 修改会影响原始对象的状态,传入对象的引用
void modifyObjectReference(MyClass &ref) {
    ref.value = 100; // 修改传入对象的值
}

// 使用指针修改传入对象的状态,需检查空指针
void modifyObjectPointer(MyClass *ptr) {
    if (ptr != nullptr) {
        ptr->value = 100; // 修改传入对象的值
    }
}

int main() {
    // 创建 MyClass 对象
    MyClass obj(10);

    // 演示修改传入对象的状态,传入对象的副本
    modifyObjectCopy(obj); // 传递对象的副本
    std::cout << "After modifyObjectCopy, Original value: " << obj.value << std::endl; // 输出原始对象的值,未被修改

    // 演示修改会影响原始对象的状态,传入对象的引用
    modifyObjectReference(obj); // 直接传递对象引用
    std::cout << "After modifyObjectReference, Modified value: " << obj.value << std::endl; // 输出修改后的值

    // 演示使用指针修改传入对象的状态,传入对象的地址
    modifyObjectPointer(&obj); // 传递对象的地址
    std::cout << "After modifyObjectPointer, Modified value: " << obj.value << std::endl; // 输出修改后的值

    return 0;
}

  

 

 

 

 

内部需要共享的变量
Eigen::Matrix4d  T_VO_to_GNSS_ENU_;
初始化赋值
SLAM.T_VO_to_GNSS_ENU_= Eigen::Matrix4d::Identity();
主线程中使用数据
SLAM.T_VO_to_GNSS_ENU_




内部引用指针
Eigen::Matrix4d  *T_VO_to_GNSS_ENU_;
初始化赋值绑定  
// 设置VO-GNSS变换关系
void tracking_module::set_T_VO_to_GNSS_ENU(Eigen::Matrix4d *T_VO_to_GNSS_ENU)
{
    T_VO_to_GNSS_ENU_=T_VO_to_GNSS_ENU;
}
分线程中使用数据 
*T_VO_to_GNSS_ENU_ 

  

 
OPENVSLAM数据

 

 

 

posted on 2024-07-27 00:25  MKT-porter  阅读(25)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3