Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;连接错误_C++ - Fatal编程技术网

C++ C++;连接错误

C++ C++;连接错误,c++,C++,我对以下程序有一些问题。该程序使用链接列表实现堆栈。我没有在这里显示所有代码,因为代码很好。但我遇到的问题是将不同的文件链接在一起 我正在使用IDE运行程序。当我运行TestIntStacks.cpp时,主方法应该从StackFunctions.cpp调用test()。测试函数(在StackFunctions.cpp中定义)使用TestStack类方法。 目前,我收到一个错误,说“链接器错误,未定义push/pop”。我做错了什么?我肯定这与命名空间有关 MyStack.h ----------

我对以下程序有一些问题。该程序使用链接列表实现堆栈。我没有在这里显示所有代码,因为代码很好。但我遇到的问题是将不同的文件链接在一起

我正在使用IDE运行程序。当我运行
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时