簡単なコードを次に示します。
#include <iostream>
#include <fstream>
template<typename T>
class A {
public:
T _v;
template<unsigned short V> void init() { _v *= V; }
void print(double txt) { std::cout << "Initialized with ?? : " << txt << std::endl; }
};
int main() {
A<double> foo;
foo._v = 3.5;
foo.init<2>();
foo.print(foo._v);
A<int> bar;
bar._v = 2;
bar.init<5>();
foo.print(bar._v);
}
A::print(double)
に依存する関数の実装が必要です。unsigned short V
たとえば、インスタンス化さ??
れたunsigned short
fromに置き換えinit()
ます。私の質問は次のとおりです。(a)それは実行可能ですか?(b) (a) の場合、どのように?
if (a) を検索しているときに、 にファンクターを追加し、class A<T>
その状態を ( の値でV
) で初期化しinit()
、 で呼び出すことができると考えましたprint(double)
が、そのようなオブジェクトを使用したことがないので、これが方法であるかどうかはわかりません行く。私は基本的にどんな提案にもオープンです。必要なのは への呼び出しがprint
同じままであることだけです (. の値がわからない他のクラスから呼び出すため) unsigned short V
。
ありがとう !