だから私はthis article about type erasureを読んでいた。しかし、その記事のコードは、例えば、部分的に間違っているようだ:C++でタイプ消去とは何ですか?
void pullTheString()
{
MyAnimal *animals[] =
{
new AnimalWrapper(Cow()), /* oO , isn't template argument missing? */
....
};
}
続い
template <typename T>
class AnimalWrapper : public MyAnimal
{
const T &m_animal;
public:
AnimalWrapper(const T &animal)
: m_animal(animal)
{ }
const char *see() const { return m_animal.see(); }
const char *say() const { return m_animal.say(); }
};
これらのミスは、記事内の任意のさらなる読んでから私をがっかり。
とにかく;誰でも簡単な例で、C++でどんなタイプの消去を教えてもらえますか?
std::function
がどのように機能するのかを知りたいと思っていましたが、私の周りに頭を浮かべることはできませんでした。
:http://stackoverflow.com/questions/5450159/type-erasure-techniques – NathanOliver
あなたのいずれかが ''を渡し、または 'T'を推定し、 'を'渡す関数を使用する必要があります。つまり、 'newAnimalWrapper'を' WrapAnimal'に置き換えます。これは、 'newAnimalWrapper'を' WrapAnimal'に置き換えます。 –
Yakk
@ NathanOliverその質問では、OPはすでに消去タイプの基本概念を知っています。 –