如何访问另一个源文件中{struct'的静态成员

时间:2017-07-28 13:34:19

标签: c++ struct static-members

我正在创建一个小程序来进行结算。我正在尝试访问另一个源文件中的头文件中声明的静态成员static double total。 Java是我的第一语言,因此无法用C ++对其进行排序。

当我尝试时,我收到以下错误。

  

bill.cpp(16):错误C2655:'BillItem :: total':当前范围内的定义或重新声明非法

     

bill.h(8):注意:请参阅'BillItem :: total'的声明

     

bill.cpp(16):错误C2086:'double BillItem :: total':重新定义

     

bill.h(8):注意:见“总计”的声明

如何使其可用。谷歌搜索错误没有帮助。

我想要实现的是在结构中创建一个静态双变量,这对所有结构实例都是通用的。我需要在另一个源文件中访问这个静态变量,我将在那里进行计算。

Bill.h

#pragma once

struct BillItem
{
public:
    static double total;
    int quantity;
    double subTotal;
};

Bill.cpp

#include<iostream>
#include "Item.h"
#include "Bill.h" 

void createBill() {
    double BillItem::total = 10;
    cout << BillItem::total << endl;
}

MainCode.cpp

#include <iostream>
#include "Bill.h"

int main() {
    createBill();
    return 0;
}

1 个答案:

答案 0 :(得分:4)

你还没有宣布你的总数。嗯,你有,但在一个功能。它需要超出功能范围:

#include<iostream>
#include "Item.h"
#include "Bill.h" 

double BillItem::total = 0;

void createBill() {
    BillItem::total = 10;
    cout << BillItem::total << endl;
}