传递Eigen Vector3指针时如何使用复合赋值运算符
解决Eigen指针向量的复合赋值问题
你遇到的问题核心是指针不能直接调用Eigen向量的成员运算符——test_vector是个指向Eigen::Vector3的指针,它本身不是向量对象,自然没法直接用+=。不过完全不用写循环,只需要先解引用指针就行,一行代码搞定:
void method_rest(Eigen::Vector3* test_vector) { Eigen::Vector3 addition_test_vector(1.0,2.0,3.0); // 解引用指针,拿到实际的向量对象后使用复合赋值 *test_vector += addition_test_vector; }
额外建议:优先用引用代替指针
在C++场景下,如果你的参数不需要支持空指针(也就是调用这个方法时必然传入有效的向量),更推荐用引用作为参数,代码会更简洁安全,也不用处理指针的解引用:
void method_rest(Eigen::Vector3& test_vector) { Eigen::Vector3 addition_test_vector(1.0,2.0,3.0); // 直接对引用使用复合赋值,和操作普通对象完全一样 test_vector += addition_test_vector; }
原理很简单:引用本质是对象的别名,操作引用就等同于操作原对象,既避免了指针的空指针风险,代码可读性也更高。
内容的提问来源于stack exchange,提问作者oracle3001
相关产品推荐
相关产品推荐

