2011-02-18 41 views
0
#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:語法錯誤:缺少 「 ;」前標識 '名_'

請幫我謝謝

+1

在哪一行是錯誤? – 2011-02-18 21:57:38

+0

上述源文件中的哪一行會引用此錯誤? – chrisaycock 2011-02-18 21:57:46

+0

它引用了我的類中的字符串變量聲明 – 2011-02-18 21:59:43

回答

3

您應該包含字符串頭文件在你的第一個文件中。看起來它抱怨說它不知道字符串是什麼。

您需要添加

#include <string> 

,並更改名_的類型

std::string name_; 
1

您需要:

std::string name_; 

而且,看起來像一個缺少分號在這裏:

void setCost(float cost) 
{ 
    cost_=cost 
} 
2

Products &pp是對Products類型的對象的引用,它不是指針。

你必須使用operator .,而不是operator ->,以便訪問的參考場:

Products(Products &p) 
{ 
    name_ = p -> name_; 
    cost_ = p -> cost_; 
} 
1

你錯過了這個功能的分號:

void setCost(float cost) 
{ 
    cost_=cost 
} 
2

嘗試移動這一行:

using namespace std; 

以上,你#包括「產品線。H」。但是如果你在products.h中使用字符串,你應該在其中包含etc。另外,我相信「使用名稱空間標準」有點令人不悅。

2

在你的包含文件,您必須聲明字符串name_作爲std::string name_