c++ - 仅在函数中设置静态变量一次

标签 c++ eigen

所以我想知道是否可以在函数范围内只设置一次静态变量。例如考虑这个功能:

void projectPointIntoPlane(const Affine3f& plane2xy, Vector3f& p)
{ 
  static Matrix3f P;
  P << Vector3f::UnitX(), Vector3f::UnitY(), Vector3f::Zero();

  p = plane2xy.inverse() * P * plane2xy * p;
}

我只想设置 P 一次,而不是在每次函数调用时设置,我该如何实现?

最佳答案

您可以在声明中使用 finished() method of CommaInitializer 来初始化它,而不是声明 P 然后单独对其进行初始化。 :

static const Matrix3f P =
    (Matrix3f() << Vector3f::UnitX(), Vector3f::UnitY(),
     Vector3f::Zero()).finished();

通过这种方法,您还可以将 P 声明为 const

关于c++ - 仅在函数中设置静态变量一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51804321/

相关文章:

c++ - 多设备环境中的 OpenCL 缓冲区实例化

c++ - Eigen - 将 const 数组映射到动态 vector

c++ - 如何使用特征库进行 lu 分解 C++

c++ - 在 C++ Eigen 库中转换 vector 数组

c++ - 识别 macOS 当前进程中的堆栈和堆段

c++ - 错误 : auto-makefile - NUL character/missing separator

c++ - Eigen 中没有复制乘法

c++ - 如何在 Eigen 中使用自定义预处理器

c# - 将openCV的vector<Point2f>转换为C#的Collections::Generic::List<Windows::Point>

c++ - 如何克服C++头文件的命名空间之恶?