我正在尝试为我吃喝的东西制作一个小“数据库”程序,当我输入产品的名称时,我想要一个列表弹出并告诉我成分。
但是。 我不想为它编写一个大程序,因为我希望这个列表能够增长,而且我不想在编译时等待任何产品的任何小改动。我想用不同的函数实现每个产品,然后通过头文件从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 ;
}
如何连接这些文件?或者我该怎么做才能使我的程序工作?谢谢!
答案 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时,我猜你错了?列出的每个代码都不正确,需要切换。