将变量数据发送到其他类的问题

时间:2015-12-05 21:13:44

标签: c++ class variables constructor

// Items.h

class Items
{
public:
    Items();
    Items(string, string, double, int, int);
    //Item setters
    void setDesciption(string);
    void setSku(int);
    void setLocation(int);
    void setSupplier(string);
    void setCost(double);

    //Item getters
    string getDescription();
    int getSku();
    int getLocation();
    string getSupplier();
    double getCost();
private:
    //Item variables
    string _description;
    string _supplier;
    double _cost;
    int _sku;
    int _location;
};

//项目类中的构造函数

Items::Items(string description, string supplier, double cost, int sku, int location)
{
    setDesciption(description);
    setSupplier(supplier);
    setCost(cost);
    setSku(sku);
    setLocation(location);
}

//这是添加项目类 //此函数用于通过传递它们的默认构造函数来设置items类中变量的值。 //现在我测试了在main()中调用AddOrDeleteItems函数,它运行得很好,但是当我在另一个类文件中尝试它时(比如添加项类),items.h文件中的变量从不设置,并返回其默认值。

void AddOrDeleteItems::newItem()
{
    string description;
    string supplier;
    double cost;
    int sku;
    int location;
    //Run checks on things like sku length, location.
    cout << "Add a new product please enter the following.\n\n";
    cout << "Description: ";
    getline(cin, description);
    cout << "\nSupplier: ";
    getline(cin, supplier);
    cout << "\nCost: ";
    cin >> cost;
    cout << "\nSku: ";
    cin >> sku;
    cout << "\nLocation: ";
    cin >> location;

    Items ItemsObj(description, supplier, cost, sku, location);
}

编辑添加我的getter和setter如果有帮助...(还修复了我的setter和其余代码中的拼写错误... lol)

//Item Setters

void Items::setDescription(string x) 
{ 
    _description = x;
}
void Items::setSku(int x) 
{ 
    _sku = x; 
}
void Items::setLocation(int x) 
{ 
    _location = x; 
}
void Items::setSupplier(string x) 
{ 
    _supplier = x; 
}
void Items::setCost(double x)
{
    _cost = x;
}

//Item Getters
string Items::getDescription() 
{
    return _description; 
}
int Items::getSku() 
{ 
    return _sku;
}
int Items::getLocation() 
{ 
    return _location; 
}
string Items::getSupplier() 
{ 
    return _supplier; 
}
double Items::getCost()
{
    return _cost;
}

1 个答案:

答案 0 :(得分:1)

<?php require_once ('../template/header.phtml')?>结束时,您执行AddOrDeleteItems::newItem(),因此您将Items ItemsObj(description, supplier, cost, sku, location);的实例声明为函数堆栈中的局部变量,然后继续从那个功能,完全忘记了这个局部变量曾经存在过。所以,你并没有真正创建Items的任何新实例。也许你的意思是:

Items

另外:那个东西应该被称为“Item”,而不是“Items”。

另外:一个名为“AddOrDeleteItems”的类被歪曲为一个概念,它的名字让我感到恶心。