簡體   English   中英

使用模板的動態特征聲明類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM