繁体   English   中英

C ++出现我不熟悉的“找不到符号”错误

[英]C++ Getting a “symbols not found” error that I'm not familiar with

尝试编译时出现以下错误:

Undefined symbols for architecture x86_64:
  "DivSales::corpSales", referenced from:
      DivSales::CalculateDivTotal()      in cc8xj4HM.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

任何建议将不胜感激。 这是我使操作员超载的第一次尝试,因此我感到问题出在这里。

另外,如果有更好的方法来实现我对switch语句以及DivSales setter函数setFirst,setSecond等所做的工作,我想听听它们。 再次感谢。 这是所有代码:

#include <iostream>
#include <string>
using namespace std;


class DivSales{
    private:
        double quarter[4];  // Holds the sales for each quarter
        double first, second, third, fourth; // Store values from the inputs
        static double corpSales; // Shared among all instances of DivSales (each object)

    public:
        // Populate the array quarter
        void setQuartersArr(double first, double second, double third, double fourth){
            quarter[0] = first;
            quarter[1] = second;
            quarter[2] = third;
            quarter[3] = fourth;
        }

        void setFirst (double fir){
            first = fir;
        }

        void setSecond (double sec){
            second = sec;
        }

        void setThird (double thi){
            third = thi;
        }

        void setFourth (double fou){
            fourth = fou;
        }

        // Returns the sales of a particular quarter
        double getSales(int quar){
            double quarSales;
            quarSales = quarter[quar];
            return quarSales;

        }

        double CalculateDivTotal(){
            double total = 0;
            for(int count = 0; count < 4; count++) total += quarter[count];
            corpSales += total;
            return corpSales;
        }

        friend ostream &operator<<(ostream &out, DivSales divi6){
            out << divi6.CalculateDivTotal();
            return out;
        }

};


int main()
{   
    int divNum = 6;
    int quartCount = 1;
    double tempSales;
    DivSales divi1, divi2, divi3, divi4, divi5, divi6;
    DivSales divisions[6] = {divi1, divi2, divi3, 
                             divi4, divi5, divi6};

    cout << "Welcome, please enter "; 
    for(int count = 0; count < divNum; quartCount++){
        cout << "Division " << count + 1 << ", Quarter " 
             << quartCount << " sales: ";
        switch (quartCount){
            case 1: cin >> tempSales; 
                    divisions[count].setFirst(tempSales);
                    break;
            case 2: cin >> tempSales;
                    divisions[count].setSecond(tempSales);
                    break;
            case 3: cin >> tempSales;
                    divisions[count].setThird(tempSales);
                    break;
            case 4: cin >> tempSales;
                    divisions[count].setFourth(tempSales);
                    count++;
                    quartCount = 0;
                    break;
        }
        tempSales = 0;
    }

    // Run the CalculateDivTotal method for each object except the last one
    for(int count = 0; count < 5; count++) divisions[count].CalculateDivTotal(); 


    cout << divi6.CalculateDivTotal();

    return 0;
}

静态声明的类成员变量必须在C ++文件中定义。

添加double DivSales::corpSales = 0; 下面的类解决了错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM