次のコードスニペットをコンパイルしようとしています。最後に発生するエラーを確認してください。
#include "Tree.h"
template <class T>
CNode<T>* CNode<T>::GetChild(const T& kData)
{
for( std::vector< CNode >::iterator it = m_vChildren.begin(); it!= m_vChildren.end(); ++it)
{
if(*it== kData)
{
return &(*it);
}
}
}
Tree.h(ヘッダーファイル):
#include "../include_m.h"
#include <vector>
template <class T>
class CNode
{
public:
CNode(const T& kData)
{
m_Data = kData;
}
void AddChildNode(const CNode& kcChildNode);
void DeleteChildNode(const T& kData);
void GetChildNode(const T& kData) const;
void Print();
private:
T m_Data;
std::vector<CNode> m_vChildren;
CNode * GetChild(const T& kData);
};
これはコンパイルに失敗し、次のエラーが発生します。
g++ -o tree Tree.cpp
Tree.cpp: In member function ‘CNode<T>* CNode<T>::GetChild(const T&)’:
Tree.cpp:12: error: expected `;' before ‘it’
Tree.cpp:12: error: ‘it’ was not declared in this scope