我开始学习在不同的.cpp文件中使用类对象..
我做了什么:
pair()
的函数,并从main()
现在,我想问两件事:
error: reference to ‘pair’ is ambiguous
这是node.h文件的代码
#include "iostream"
#include"stdlib"
using namespace std;
class node
{
int data;
public:
node *next;
int insert(node*);
node* create();
int display(node *);
} *start = NULL, *front, *ptr, n;
int node::insert(node* np)
{
if (start == NULL)
{
start = np;
front = np;
}
else
{
front->next = np;
front = np;
}
return 0;
}
node* node::create()
{
node *np;
np = (node*)malloc(sizeof(node)) ;
cin >> np->data;
np->next = NULL;
return np;
}
int node::display(node* np)
{
while (np != NULL)
{
cout << np->data;
np = np->next;
}
return 0;
}
int main_node()
{
int ch;
cout << "enter the size of the link list:";
cin >> ch;
while (ch--)
{
ptr = n.create();
n.insert(ptr);
}
n.display(start);
cout << "\n";
return 0;
}
这是node_pair.cpp的代码
#include"iostream"
#include"node.h"
using namespace std;
node obj;
int pair()
{
node* one, *two, *save;
one = start;
two = start->next;
while (two != NULL)
{
save = two->next;
two->next = one;
one->next = save;
}
}
int main()
{
main_node();
pair();
obj.display(start);
return 0;
}
我该怎么做才能解决此错误
现在是第二个问题
2.我希望node* next
指针在节点类中保持私有,但如果我这样做,那么我将无法在pair()
函数中访问它。
请提前回复,谢谢。
答案 0 :(得分:2)
一些提示:
std::pair
冲突。using namespace std;
。这是一个不好的做法,并造成这样的错误。答案 1 :(得分:0)
您与pair()
和std::pair
发生了名称冲突。
最佳做法是避免using
整个namespace std
- 只需使用您需要的内容。例如,如果您只需要std::cin
,则可以使用using std::cin;
将其添加到全局命名空间,而不是std::pair
。您也可以将cin
的所有实例替换为std::cin
。
如果你真的想要使用整个namespace std
,你也可以创建自己的namespace
来放入你的代码 - 特别是你需要把你的pair()
放进去这个新命名空间。你这样做:
namespace mynamespace {
int pair() {
// ...
}
// ... other code in mynamespace
} // end mynamespace