私は、大きなプロジェクトの一部として使用するためにテンプレートを使用して固定長文字列クラスを作成する必要があるが、固定長文字列を使い始めるには問題があります。私はここで助けに来ると思った。私は、私の問題の原因となっているテンプレートに関する多くの経験がありません。私の現在の問題は、私に対処方法がわからないエラーを出すコピーコンストラクタにあります。だからここに私のクラスの定義です:テンプレートを使用した固定長文字列
template <int T>
class FixedStr
{
public:
FixedStr ();
FixedStr (const FixedStr<T> &);
FixedStr (const string &);
~FixedStr ();
FixedStr<T> & Copy (const FixedStr<T> &);
FixedStr<T> & Copy (const string &);
private:
string Data;
};
そして、ここでは私に問題を与えているコピーコンストラクタです:
template <int T>
FixedStr<T>::FixedStr (const string & Str)
{
if (Str.length() == <T>)
strcpy (FixedStr<T>.Data, Str);
}
は、誰も私にこれを処理する方法に関していくつかのアドバイスを与えることはできますか?簡単にエラーが表示されるのですか、または問題に近づいていますか?あなたが私に与えることができるお手伝いをありがとう。
'Str.length()== T'である必要があります。山括弧は、テンプレートパラメータの取得には使用されません。 – Philipp
'std :: string'をラップすると、固定長の文字列IMOの全体が欠落しています。フリーストアの割り当てを避け、' std :: string'は内部的にフリーストアの割り当てを使います。 – ildjarn
@ildjarn:これは、実際のプロダクション用に固定長の文字列クラスを書くのではなく、テンプレートの仕組みを学ぶためのものだと思います。 – Philipp