【问题标题】:Using Other Programs as Part of Another Program将其他程序用作其他程序的一部分
【发布时间】:2014-12-01 23:38:53
【问题描述】:

我正在完成本学期的最后一个编程任务(我猜想在我改变专业时看到的最后一个计算机程序哈)并且遇到了障碍。该作业要求我们编写两个程序,一个程序从文件中读取一些信息并创建一个哈希表,并将其保存到输出文件中。第二个程序应该允许用户输入一个密钥,该程序将在该输出文件中搜索该密钥并返回它包含的信息(如果找到)。

我仍处于这个程序的规划阶段,我喜欢在开始真正开始编码之前将它们全部写在纸上,因为出于某种原因它有助于我弄清楚发生了什么更好,但我认为我的程序创建哈希表应该可以工作,因为它与我们几周前必须编写的程序几乎相同,该程序只是创建了哈希表(手指交叉),但我在搜索程序上遇到了问题。我的搜索程序实际上只有一种方法可以在文件中搜索用户输入的密钥。如果我在我提到的仅创建哈希表的程序中包含搜索功能的代码,则可能更容易解释我的具体问题。

void Hash::findItem(int key) {
    int index = hash(key);
    bool wasFound = false;
    record* ptr = hashTable[index];
    while(ptr != NULL) {
        if(ptr->key == key) {
            wasFound = true;
            key = ptr->key;
        }
        ptr = ptr->next;
    }
    if(wasFound == true) {
        cout << key << " " << name << " " << code << " " << cost << " " << index << endl;
    }
    else {
        cout << "The key " << key << " was not found in the table." << endl;
    }
}

Hash 是我在创建表的程序中使用的类的名称,record 是我用来保存每条记录信息的结构的名称。其他一切都应该是不言自明的。

这就是我遇到麻烦的地方。这段代码中的几乎所有内容实际上都是在我的第一个程序中声明和定义的,但是这个方法/函数(不确定术语是否正确,我正在学习 3 种不同语言的 3 门编程课程,所以我一直处于混乱状态)只会在我的搜索程序中使用。我不确定如何连接这两个程序(如果有意义的话)。比如,我怎样才能使我在我的第一个程序中创建的东西可用于我的搜索程序?

我为漫无目的道歉,我在简短和甜蜜方面并不比在编程方面更好。希望这很清楚。如果我需要包含任何其他信息,请告诉我,我很乐意提供帮助。提前感谢您提供的任何帮助。

注意 我使用“继承”作为这篇文章的标签之一,我不太确定这是继承的问题,但我觉得可能是这样。如果您有其他感觉,请告诉我,我可以将其删除,因为我想确保这不会出现在错误的地方并浪费任何人的时间。

【问题讨论】:

  • 不,这与继承无关。也没有多少哈希,因为哈希似乎不是你的问题。
  • 您可以在新项目中重复使用源文件的副本,并且应该能够像平常一样引用它们。你的开发环境是什么? (即Visual Studio?)
  • 谢谢@user2079303,我看看能不能去掉那些标签。
  • 那么简单的事情就是在搜索程序的包含语句中添加来自其他程序的源文件?我只是在 Linux 的 No Machine 远程登录工具上使用了一个基本的文本编辑器 (Nedit)。

标签: c++


【解决方案1】:

假设您有 4 个文件:

  • common.h - 普通员工的类型声明
  • common.cpp - 包含所有普通员工职能机构
  • main1.cpp - 第一个可执行文件
  • main2.cpp - 第二个可执行文件

所有 cpp 文件都应包含 common.h

现在可以编译如下:如果要调试,可以在每一行添加-g。

g++ -c common.cpp -o common.o 
g++ -c main1.cpp -o main1.o
g++ -c main2.cpp -o main2.o
g++ main1.o common.o -o main1
g++ main2.o common.o -o main2

前 3 行用于将源文件编译为目标文件。

最后两个是将对象链接到可执行文件。

注意你只需要有 4 个文件...

【讨论】:

  • 谢谢,但我不认为我可以做任何这些选择。我们的教授希望我们所有的程序都以 3 种文件格式(头文件、cpp 文件和主文件或驱动程序文件)编写,所以这个特定的程序将有 6 个文件。在我的搜索程序文件中添加类似“#include”prog8.cpp“”这样的东西会不会起作用?
  • 啊,我明白了。让我确保我得到它。现在我有 6 个文件,prog8.h、prog8.cpp、prog8main.cpp、prog8search.h、prog8.cpp 和 prog8searchMain.cpp。因此,如果我对您的理解正确,我可以将 2 个头文件合并到一个文件中,将包含函数定义的 2 个文件和所有内容合并到它们自己的单个文件中,然后再添加 2 个文件,每个文件一个 main.xml 文件。这是正确的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多