2011-02-18 5 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 

Mon code source est:Impossible de supprimer manquant; avant erreur de nom de la variable

#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; 
} 

mais je reçois cette erreur que je ne peux pas enlever:

erreur C2146: erreur de syntaxe: manquant ' " avant identifiant 'name_'

S'il vous plaît aidez-moi Merci

+1

Sur quelle ligne est l'erreur? –

+0

Sur quelle ligne de votre fichier source se situe cette erreur? – chrisaycock

+0

Il se réfère à la déclaration de variable de chaîne dans ma classe –

Répondre

3

Vous devez inclure l'en-tête de chaîne fichier dans votre premier fichier. On dirait qu'il se plaint qu'il ne sait pas ce qu'est une chaîne.

Vous devez ajouter

#include <string> 

et changer le type de name_ à

std::string name_; 
+1

@fahad: Exactement ce que je vous ai dit dans [chat] (http://chat.stackoverflow.com/transcript/message/359902#359902) –

1

Vous devez:

std::string name_; 

Aussi, ressemble à un point-virgule manquant ici:

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

En Products &p, p est une référence à un objet de type Products, ce n'est pas un pointeur.

Vous devez utiliser operator ., au lieu de operator -> afin d'accéder aux champs de référence:

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

vous manque un point-virgule dans cette fonction:

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

Essayez de déplacer cette ligne:

using namespace std; 

Au-dessus de la ligne où vous #include « Produits .h ". Mais si vous utilisez une chaîne dans products.h, vous devriez probablement y inclure à la place. Aussi, je crois que "using namespace std" est un peu mal vu.

+2

Vrai, il est généralement mauvais de polluer l'espace de noms global quand tout ce dont vous avez vraiment besoin est une chaîne dans un fichier d'en-tête. – bstamour

2

dans votre fichier include, vous devez déclarer la chaîne name_ comme std::string name_

Questions connexes