试图使用头文件

时间:2014-03-16 23:55:47

标签: c++ file function header

我正在尝试为我吃喝的东西制作一个小“数据库”程序,当我输入产品的名称时,我想要一个列表弹出并告诉我成分。

但是。 我不想为它编写一个大程序,因为我希望这个列表能够增长,而且我不想在编译时等待任何产品的任何小改动。我想用不同的函数实现每个产品,然后通过头文件从main.cpp文件中调用该函数。如果可以,请你帮助我。谢谢。

我的代码: main.cpp中

 #include <iostream>
 #include <limits>
 #include "Arizona_Green_Tea.h"

using namespace std ;



int main(){
    char input[100] ;

    std::cout << "Search Database: " ;
    std::cin >> input ;

    if (input == "Arizona"){
        Arizona_Green_Tea();
    }



return 0 ;
}

Arizona_Green_Tea.cpp

#include "Arizona_Green_Tea.h"

int Arizona_Green_Tea()
{

}

Arizona_Green_Tea.h

#include <iostream>
using namespace std ;

int Arizona_Green_Tea(){
    std::cout << "Premium Brewed Green Tea " << std::endl ;
    std::cout << "Filtered Water" << std::endl ;
    std::cout << "High-Fructose Corn Syrup" << std::endl ;
    std::cout << "Honey" << std::endl ;
    std::cout << "Citric Acid" << std::endl ;
    std::cout << "Natural Flavors" << std::endl ;
    std::cout << "Ginseng Extract" << std::endl ;
    std::cout << "Ascorbic Acid" << std::endl ;
 }

如何连接这些文件?或者我该怎么做才能使我的程序工作?谢谢!

2 个答案:

答案 0 :(得分:1)

你的标题应该有一个函数的原型,即没有正文的函数:

// This goes into the header
int Arizona_Green_Tea();
// Note that there are no curly braces here; your header has a pair of curly braces,
// meaning that there's an empty body.

目前,您的函数有一个正文,因此最终会出现重复的函数定义。

  

在我写完&#34; Arizona&#34;之后,我仍然无法看到输出,它只是保持空白

这是罪魁祸首:

char input[100] ;

由于此声明,下面的比较不起作用:

if (input == "Arizona") ...

包含<string>标头,并将声明更改为std::string,如下所示:

string input;

答案 1 :(得分:1)

Abstract Factory Design Pattern似乎是您想要根据您的问题采取的路线。本质上,它意味着你创建一个抽象类,比如说“Food”,它有一个int构造函数,并允许它由你新创建的类继承(比如Arizona_Green_Tea)。您需要像在main.cpp中一样手动添加包含行中的头文件并重建,但在我看来,没有办法解决这个问题。

这对您的数据库程序很有用,因为您以后可以创建带有“Food”类参数的函数,并且可以传入任何继承的类,例如Arizona_Green_Tea。

另外,当你列出Arizona_Green_Tea.h和Arizona_Green_Tea.cpp时,我猜你错了?列出的每个代码都不正确,需要切换。