main.cpp中的int main()一行报错,报错信息是[Error] a function-definition is not allowed here before '{' token
**main.cpp关键代码如下:**:
#include <stdio.h>
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <list>
#include <vector>
#include "include.h"
using namespace std;
int main () {
//((FileCatalogLoader) catalogLoader).loadCatalog("catalog.txt");
cout << "Welcome to the vending machine" << endl;
//run();
//writeFile("catalog.txt",catalogFormatter.formatCatalog(catalog));
return 0;
}
```
**include.h代码如下:**
#include "Catalog.h"
#include "CatalogLoader.h"
#include "DataCatalogFormatter.h"
#include "DataSalesFormatter.h"
#include "Drink.h"
#include "FileCatalogLoader.h"
#include "Food.h"
#include "OperatorCatalogLoader.h"
#include "Order.h"
#include "OrderItem.h"
#include "Password.h"
#include "Product.h"
#include "Sales.h"
#include "Vault.h"
extern Catalog* catalog;
catalog = Catalog::getSingletonInstance();
extern Sales* sales;
sales = Sales::getSingletonInstance();
extern Password* pw;
pw = Password::getSingletonInstance();
extern Vault* vault;
vault = Vault::getSingletonInstance();
extern CatalogLoader* catalogLoader;
catalogLoader = FileCatalogLoader::getSingletonInstance();
extern DataSalesFormatter* salesFormatter;
salesFormatter = DataSalesFormatter::getSingletonInstance();
extern DataCatalogFormatter* catalogFormatter;
catalogFormatter = DataCatalogFormatter::getSingletonInstance();
报错情况:
main.cpp中的int main()一行报错,报错信息是[Error] a function-definition is not allowed here before '{' token
对于这个错误,网上查的都是函数中定义函数、缺括号或分号导致的,可是我的代码不存在以上的问题,那是为什么出错呢?
另外,我把头文件#include "include.h"去掉,这块就不报错了,这是为什么呢?
希望有人能帮我解答一下这个问题,非常感谢!
建议:
从最简单的 main() 函数开始写起,把 include.h 也从最简单写起, 每一次都编译。 个人认为是你的 include.h 有一些不标准的写法,导致 main() 那里报错。
extern Catalog* catalog;
catalog = Catalog::getSingletonInstance();这种写法有问题,catalog没有实际定义。下面的那些同理
那该怎么实际定义呢
你试试把include.h换个名字
DataCatalogFormatter* catalogFormatter = DataCatalogFormatter::getSingletonInstance();
extern DataCatalogFormatter* catalogFormatter;
先定义加赋初值,再extern
格式错误
以下为部分代码,采纳后留网盘给你全部程序:
class product
{
public:
string id;//商品编号
string name;//商品名称
double in_price;//商品进价
double out_price;//商品售价
int count;//商品库存量
string getid(){return id;}
virtual void input(string i, string n, double in, double out, int c, string _type, string _quality, float _capacity, float _acid)=0;
virtual void show(bool op=true)=0;
virtual void input(ifstream & is)=0;
virtual void output(ofstream & os)=0;
};
class food:public product
{
public:
string type;//类型
string quality;//质量
virtual void input(string i, string n, double in, double out, int c, string _type, string _quality, float _capacity, float _acid)
{
id = i;
name = n;
in_price = in;
out_price = out;
count = c;
type = _type;
quality = _quality;
}
virtual void show(bool op=true)
{
cout << "商品编号:" << id
<< " 名称:" << name
<< " 类型:" << type
<< " 质量:" << quality;
if(op) cout << " 进价:" << in_price;
cout << " 售价:" << out_price
<< " 数量:" << count <<endl;
}
virtual void input(ifstream & is)
{
string p;
is >> id >> name>> in_price>> out_price>> count >> type >> quality;
}
virtual void output(ofstream & os)
{
os << id
<< " " << name
<< " " << in_price
<< " " << out_price
<< " " << count
<< " " << type
<< " " << quality <<endl;
}
};
class drinks:public product
{
public:
float capacity;//容量
float acid;//酸度
virtual void input(string i, string n, double in, double out, int c, string _type, string _quality, float _capacity, float _acid)
{
id = i;
name = n;
in_price = in;
out_price = out;
count = c;
capacity = _capacity;
acid = _acid;
}
virtual void show(bool op=true)
{
cout << "商品编号:" << id
<< " 名称:" << name
<< " 容量:" << capacity
<< " 酸度:" << acid;
if(op) cout << " 进价:" << in_price;
cout << " 售价:" << out_price
<< " 数量:" << count <<endl;
}
virtual void input(ifstream & is)
{
string p;
is >> id >> name>> in_price>> out_price>> count >> capacity >> acid;
}
virtual void output(ofstream & os)
{
os << id
<< " " << name
<< " " << in_price
<< " " << out_price
<< " " << count
<< " " << capacity
<< " " << acid <<endl;
}
};