#ifndef PRODUCTS_H
#define PRODUCTS_H
#include "Products.h"
class Products
{
protected:
static int count;
string name_;
float cost_;
public:
Products() // default ctor
{
name_ = "";
cost_ = 0.0f;
count++;
}
Products(string name , float cost) //parametorized ctor
{
name_ = name;
cost_ = cost;
count++;
}
Products(Products &p )
{
name_ = p -> name_;
cost_ = p -> cost_;
}
~Products()
{}
string getName()
{
return name_;
}
void setName(string name)
{
name_=name;
}
float getCost()
{
return cost_;
}
void setCost(float cost)
{
cost_=cost
}
float CalcTotal(Products *p_products) //Not made yet!
{
float total=0.0f;
for(int i = 0 ; i < count; i++)
{
total += p_products->cost_;
p_products ++;
}
return total;
}
Products read()
{
Products size,*p_products;
cout << "Enter Number of Items To Enter:";
cin >> size;
cout << endl;
p_products = new Products[size];
for(int i = 0 ; i < size; i++)
{
cout << "Enter Name:";
cin >> p_products -> name_;
cout << endl << "Enter Cost";
cin >> p_products -> cost_;
cout << endl;
p_products ++;
}
return p_products;
}
void write(Products *p_products)
{
for(int i = 0 ; i < count ; i++,p_products++)
{
cout<<"Products Name:\t\t"<<p_products->name_<<endl;
cout<<"Products Price:\t\t"<<p_products->cost_<<endl;
}
}
};
#endif
我的源代码是:
#include <iostream>
#include <string>
#include "Products.h"
using namespace std;
static int Products::count;//declaring static variable
int main()
{
Products *p_products,temp;
*p_products=temp.read();
//temp.write();
system("pause");
delete[] Product;
return 0;
}
但是我收到了这个我无法删除的错误:
错误C2146:语法错误:丢失 ';'在标识符'name _'之前
请帮帮我!谢谢
答案 0 :(得分:3)
您应该在第一个文件中包含字符串头文件。它似乎在抱怨它不知道字符串是什么。
您需要添加
#include <string>
并将name_的类型更改为
std::string name_;
答案 1 :(得分:2)
在Products &p
中,p
是对Products
类型对象的引用,它不是指针。
您必须使用operator .
而不是operator ->
才能访问参考字段:
Products(Products &p )
{
name_ = p -> name_;
cost_ = p -> cost_;
}
答案 2 :(得分:2)
尝试移动此行:
using namespace std;
在#include“Products.h”的行上方。但是如果你在products.h中使用字符串,那么你应该在那里包含等等。另外,我相信“使用命名空间std”有点不受欢迎。
答案 3 :(得分:2)
在您的包含文件中,您必须将字符串name_
声明为std::string name_
答案 4 :(得分:1)
你需要:
std::string name_;
此外,这里看起来像一个缺少的分号:
void setCost(float cost)
{
cost_=cost
}
答案 5 :(得分:1)
你在这个函数中缺少一个分号:
void setCost(float cost)
{
cost_=cost
}