[英]Dynamic eigen declaration types using templates
我正在編寫一個簡單的程序來定義具有表示狀態的向量的系統。 我想根據派生類中的狀態數來聲明特征向量的類型。
我嘗試使用別名上的模板來實現這一點,類似於下面顯示的代碼
#include <iostream>
#include <Eigen/Core>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;
class A
{
public:
template <int T>
using StateVector = typename Matrix<double, T, 1>;
};
class B : public A
{
public:
int NUM_STATES = 5;
B(){
StateVector<NUM_STATES> a;
a.setIdentity();
cout<<a<<endl;
}
};
int main(){
B b;
}
我最終想要一個可以在派生類中使用的類型。 這可能嗎?
通過兩個小的更改,您的代碼可以正常工作。
首先,這里不能有typename
關鍵字:
template <int T>
using StateVector = Matrix<double, T, 1>;
其次, NUM_STATES
必須是編譯時常量,即,將其聲明為enum
元素或static const int
(或static constexpr int
,如果您願意):
static const int NUM_STATES = 5;
關於 Godbolt 的完整工作示例: https ://godbolt.org/z/_T0gix
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.