オブジェクトのメンバーが入力と等しいかどうかを確認するコンパレータを作成しました。char[]; であるメンバーを除いて、これは魅力のように機能します。
私はインターネット、C++ ISO 標準を検索し、多くのことを試しましたが、わかりません。
これは単純化されたコードです:
/*
* main.cpp
*
* Created on: Nov 17, 2012
* Author: martijn
*/
#include <string.h>
class Data {
public:
Data() {
strcpy(Name, "MyCharArray");
};
virtual ~Data();
char Name[12];
};
template <class ClassT, char (ClassT::*Name)[]> // What should be here?!
class Comparator {
public:
Comparator() {};
~Comparator() {};
};
int main() {
Comparator<Data, &Data::Name> comparatorArray;
return 0;
}
問題の領域 (少なくとも私はそれを認識しています) はコードに示されています。現在のコードは正しくありません。コンパイラは次のように述べています。
エラー: テンプレート引数 '&Data::Name' を 'char (Data::*)[]' に変換できませんでした</p>