C++ C++;连接错误
我对以下程序有一些问题。该程序使用链接列表实现堆栈。我没有在这里显示所有代码,因为代码很好。但我遇到的问题是将不同的文件链接在一起 我正在使用IDE运行程序。当我运行C++ C++;连接错误,c++,C++,我对以下程序有一些问题。该程序使用链接列表实现堆栈。我没有在这里显示所有代码,因为代码很好。但我遇到的问题是将不同的文件链接在一起 我正在使用IDE运行程序。当我运行TestIntStacks.cpp时,主方法应该从StackFunctions.cpp调用test()。测试函数(在StackFunctions.cpp中定义)使用TestStack类方法。 目前,我收到一个错误,说“链接器错误,未定义push/pop”。我做错了什么?我肯定这与命名空间有关 MyStack.h ----------
TestIntStacks.cpp
时,主方法应该从StackFunctions.cpp
调用test()
。测试函数(在StackFunctions.cpp
中定义)使用TestStack
类方法。
目前,我收到一个错误,说“链接器错误,未定义push/pop”。我做错了什么?我肯定这与命名空间有关
MyStack.h
-------------------------------------
namespace A
{
class Node{
public :
char data;
StackNode* link;
StackNode(int v=0): data(v), link(NULL){ }
};
class MyStack{
private:
Node * top;
public:
MyStack():top(NULL){ }
void push(int c);
};
}//namespace
//TestStack.cpp
--------------------------------------------------------------
#include "MyStack.h"
namespace A
{
void MyStack::push(int x)
{
StackNode *temp = new StackNode(x);
temp->link = top;
top = temp;
}
}
//StackFunctions.cpp
-----------------------------------------------------------
#include <iostream>
#include "TestStack.h"
using namespace std;
using namespace A;
void test()
{
MyStack st;
st.push(1);
st.push(2);
st.push(3);
st.push(4);
}
// TestIntStacks.cpp
----------------------------------------------------------------
// Code for testing the TestStack
// from the A namespace.
#include <iostream>
#include <vector>
using namespace std;
#include "TestStack"
#include "StackFunctions.cpp"
void test();
int main()
{
test();
system("pause");
return 0;
}
MyStack.h
-------------------------------------
名称空间A
{
类节点{
公众:
字符数据;
StackNode*链接;
StackNode(intv=0):数据(v),链接(NULL){}
};
类MyStack{
私人:
节点*顶部;
公众:
MyStack():top(NULL){}
无效推力(INTC);
};
}//名称空间
//TestStack.cpp
--------------------------------------------------------------
#包括“MyStack.h”
名称空间A
{
void MyStack::push(int x)
{
StackNode*temp=新的StackNode(x);
温度->链接=顶部;
顶部=温度;
}
}
//StackFunctions.cpp
-----------------------------------------------------------
#包括
#包括“TestStack.h”
使用名称空间std;
使用名称空间A;
无效测试()
{
迈斯塔克街;
圣普什(1);
圣普什(2);
圣普什(3);
圣普什(4);
}
//TestIntStacks.cpp
----------------------------------------------------------------
//测试测试堆栈的代码
//从一个名称空间。
#包括
#包括
使用名称空间std;
#包括“测试堆栈”
#包括“StackFunctions.cpp”
无效试验();
int main()
{
test();
系统(“暂停”);
返回0;
}
您正在头文件TestStack.h中定义push()
和pop(
)方法,但您尚未在TestStack.cpp中为它们提供实现。您需要添加对对象执行推送和弹出操作的代码。您正在定义push()
和pop(
)方法,但您尚未在TestStack.cpp中为它们提供实现。您需要添加在对象上执行推送和弹出操作的代码。我很清楚这个错误。您声明了push()
和pop()
在头文件中,但链接器找不到这些方法的实现位置
它们是在哪里定义的?我很清楚这个错误。您在头文件中声明了
push()
和pop()
,但是链接器找不到这些方法在哪里实现
它们是在哪里定义的?您需要强制生成脚本使用两个cpp文件。如果您编写了自己的生成文件,则需要为每个源生成中间对象,然后在最后链接
我怀疑DEV-C++不会自动生成对象文件或尝试将所有内容链接在一起。您需要强制生成脚本使用两个cpp文件。如果您编写了自己的生成文件,则需要为每个源生成中间对象,然后在最后链接
<>我怀疑DEV-C++没有自动生成对象文件,也没有试图把所有的东西链接在一起。 < P>我认为它与提供给链接器的参数有关。例如,当你使用Visual C++ 6时,类似的错误发生在下面。您不会得到类似的错误。因为IDE没有根据提供的头文件确定源文件。我不知道dev-c++IDE,但解决方案可能类似。问题在于您是否编译TestStask.CPP和编译的输出没有提供给链接器,所以链接器无法找到实现。< P>我认为它与提供给链接器的参数有关。例如,当使用Visual C++ 6时,类似的错误发生在下面。p文件到项目中,您会遇到类似的错误。因为IDE没有根据提供的头文件确定源文件。我不知道dev-c++IDE,但解决方案可能类似。问题在于您是否编译TestStack.cpp和此编译的输出未提供给链接器,因此链接器找不到实现。不确定是否与命名空间有关。显示如何构建程序以及如何在StackFunction.cpp中使用此类可能有助于人们帮助您。如果出现错误,您认为代码很好。不是。请给出您的代码因此,我们可以告诉您代码中的错误位置。什么是链接器命令?发送链接器运行的内容我正在使用DEV-C++IDE。我正在运行TestIntStacks.cpp文件不确定它是否与命名空间有关。显示如何构建程序以及如何在StackFunction.cpp中使用此类可能有助于人们帮助您。如果出现错误,您假设您的代码是很好。不是。给我们你的代码,这样我们就可以告诉你代码中哪里出错了。什么是链接器命令?发送链接器运行的内容我正在使用DEV-C++IDE。我正在运行TestIntStacks.cpp文件谢谢你的回复。我已经在TestStack.cpp文件中实现了它们,我只是没有在这里显示我的代码。当它在一个文件中时,程序工作正常,当它没有分为.h和.cpp文件时。我使用的是dev-c++IDE。谢谢你的回复。我已经在TestStack.cpp文件中实现了它们,我只是没有在这里显示我的代码。当它在一个文件中,当它没有分为.h和.cpp文件时,程序工作正常。我使用的是dev-c++IDE。它们是在TestStack.cpp文件中定义的。我没有显示因为这是一个家庭作业问题,所以需要在方法中添加代码。当程序位于一个文件中时,它可以正常工作,但当我将其分隔为int时