嵌套类模板 [英] Nested Class Template

查看:71
本文介绍了嵌套类模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人请帮助我!


我有这样的模板类:


---------- ----------------------------------------


模板< 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆