无法删除缺失;在变量名称错误之前

时间:2011-02-18 21:55:11

标签: c++ compiler-errors compilation

#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 _'之前

请帮帮我!谢谢

6 个答案:

答案 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
}