理解しようとしているこの C++ スニペットがあります。
.hh ファイル:
class A
{
private:
//recordDelimiter is a '+' character
// I can do this because char is an integral type!
static const char recordDelimiter = '+';
void f()
{
....
//serializedData is a std:;string
//Get number of times A::recordDelimiter is found i.e. Number of objects
// Non-Functional
int times = (int) std::count (serializedData.begin(), serializedData.end(), A::recordDelimiter);
// Functional
const char recDel = A::recordDelimiter;
int times = (int) std::count (serializedData.begin(), serializedData.end(), recDel);
// Functional
int times = (int) std::count (serializedData.begin(), serializedData.end(), '+');
....
}
};
std::count 参照から、これは関数のシグネチャです。
template <class InputIterator, class T>
typename iterator_traits<InputIterator>::difference_type
count (InputIterator first, InputIterator last, const T& val)
A::recordDelimiter
そのため、代わりに使用することが問題になる理由がわかりません'+'
。コンパイルすると undefined reference to
A::recordDelimiterが得られます'`
私の質問は基本的に、なぜ上記の機能しないコードが機能しないのですか? そして、どうしてこれをするのですか:
const char recDel = USerializer::recordDelimiter;
それを std::count に渡しますか?