嵌套类模板 [英] Nested Class Template
问题描述
有人请帮助我!
我有这样的模板类:
---------- ----------------------------------------
模板< typename T>
班级列表
{
公开:
...
//嵌套类
类Node
{
public:
...
void setPreviousNode(Node * pnNode);
void setNextNode(Node * pnNode);
private:
//数据成员
T m_sData;
节点* m_pnPreviousNode;
节点* m_pnNextNode;
....
};
....
模板< typename T> ;
void List< T> :: Node :: setPreviousNode(Node * pnNode)
{
m_pnPreviousNode = pnNode;
}
模板< typename T>
void List< T> :: pushBack(T sString)
{
...
pnNewNode-> setPreviousNode(m_pnLast节点);
m_pnLastNode-> setNextNode(pnNewNode);
...
}
....
int main()
{
List< int> i;
i.pushBack(1);
i.pushBack(2);
i.pushBack(3);
i.pushBack(4);
返回0;
}
- ------------------------------------------------ <无线电通信/>
我可以编译它(我正在使用VC ++ 6.0)。但当我尝试链接它时,它就是b $ b给了我:
Main.obj:错误LNK2001:未解析的外部符号" public:void
__thiscall List< int> :: Node :: setNextNode(class List< int> :: Node *)"
(?setNextNode @ Node @?$ List @ H @@ QAEXPAV12 @@ Z)
Main.obj:错误LNK2001:未解析的外部符号" public:void
__thiscall List< int> :: Node :: setPreviousNode(class List< ; int> :: Node *)"
(?setPreviousNode @ Node @?$ List @ H @@ QAEXPAV12 @@ Z)
Main.obj:错误LNK2001 :未解析的外部符号" public:
__thiscall List< int> :: Node :: Node(int)" (?? 0Node @?$ List @ H @@ QAE @ H @ Z)
我认为它与我的setNextNode和setPreviousNode有关。
由于Node嵌套在模板类List中,如何将其作为
参数传递?我是否正确宣布了?谢谢。
--DK
Someone please help me!
I have a template class like this:
--------------------------------------------------
template<typename T>
class List
{
public:
...
// Nested Class
class Node
{
public:
...
void setPreviousNode(Node* pnNode);
void setNextNode(Node* pnNode);
private:
// Data Members
T m_sData;
Node* m_pnPreviousNode;
Node* m_pnNextNode;
....
};
....
template<typename T>
void List<T>::Node::setPreviousNode(Node* pnNode)
{
m_pnPreviousNode = pnNode;
}
template<typename T>
void List<T>::pushBack(T sString)
{
...
pnNewNode->setPreviousNode(m_pnLastNode);
m_pnLastNode->setNextNode(pnNewNode);
...
}
....
int main()
{
List<int> i;
i.pushBack(1);
i.pushBack(2);
i.pushBack(3);
i.pushBack(4);
return 0;
}
--------------------------------------------------
I can compile it (I''m using VC++ 6.0). But when I try to link it, it
gave me:
Main.obj : error LNK2001: unresolved external symbol "public: void
__thiscall List<int>::Node::setNextNode(class List<int>::Node *)"
(?setNextNode@Node@?$List@H@@QAEXPAV12@@Z)
Main.obj : error LNK2001: unresolved external symbol "public: void
__thiscall List<int>::Node::setPreviousNode(class List<int>::Node *)"
(?setPreviousNode@Node@?$List@H@@QAEXPAV12@@Z)
Main.obj : error LNK2001: unresolved external symbol "public:
__thiscall List<int>::Node::Node(int)" (??0Node@?$List@H@@QAE@H@Z)
I think it has something to do with my setNextNode and setPreviousNode.
Since Node is nested in the template class List, how do I pass it as a
parameter? Did I declare it correctly? Thanks.
--DK
推荐答案
List @ H @@ QAEXPAV12 @@ Z)
Main.obj:错误LNK2001:未解析的外部符号" public:void
__thiscall List< int> :: Node :: setPreviousNode(class List< int> ::节点*)
(?setPreviousNode @ Node @?
List@H@@QAEXPAV12@@Z)
Main.obj : error LNK2001: unresolved external symbol "public: void
__thiscall List<int>::Node::setPreviousNode(class List<int>::Node *)"
(?setPreviousNode@Node@?
List @ H @@ QAEXPAV12 @@ Z)
Main.obj:错误LNK2001:未解析的外部符号" public:
__thiscall List< int> :: Node :: Node(int)" (?? 0Node @?
List@H@@QAEXPAV12@@Z)
Main.obj : error LNK2001: unresolved external symbol "public:
__thiscall List<int>::Node::Node(int)" (??0Node@?
List @ H @@ QAE @ H @ Z)
我认为它与我的setNextNode有关和setPreviousNode。
由于Node嵌套在模板类List中,如何将其作为
参数传递?我是否正确宣布了?谢谢。
--DK
List@H@@QAE@H@Z)
I think it has something to do with my setNextNode and setPreviousNode.
Since Node is nested in the template class List, how do I pass it as a
parameter? Did I declare it correctly? Thanks.
--DK
这篇关于嵌套类模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!