テンプレート引数を持つテンプレート化されたクラスがあり、クラスが保存するいくつかのデータポイントの次元数があります。MyClass<-1>
このクラスには、コンパイル時に不明な次元を許可する特別なバージョンがあります。
MyClass<2>
特定のクラス (たとえば) をこのより一般的な形式にキャストするにはどうすればよいですか?
もう少し具体的にするために、状況を示す人為的な例を次に示します。(私は Eigen ライブラリを使用していますが、一般的な原則としてこれは問題ではないと思います)
using namespace Eigen;
template <std::size_t dim>
class MyClass {
public:
// Some constructors...
// A sample function:
Matrix<double, dim, 1> returnPoint();
// Some more functions here
private:
Matrix<double, dim, 1> point;
}
ここで、次のコード セグメントがあるとします。
MyClass<2> *foo;
MyClass<Dynamic> *bar; // Dynamic is a Eigen constant, being defined as -1
// Do something here
// How to do this:
bar = some_cast<MyClass<Dynamic> *>(foo);
問題について考えてみると、ポイントの値を実際にコピーしないと、私が望むものをアーカイブすることは不可能だと思います。私が間違っていることを証明したり、この仮定を確認したりできる人はいますか?