C++头文件和 CPP 文件

C++ header file and CPP file

本文关键字:文件 CPP C++      更新时间:2023-10-16

我已经在一个名为Phone.h的头文件中创建了我的类,现在我有一个PhoneC.cpp,这是我从Phone.h定义函数的地方,然后是我的main.cpp,这是我声明int main的地方,依此类推。虽然我收到一个错误

one or more multiply defined symbols found

我不太确定这意味着什么,也没有任何其他帖子解释修复程序是否足够公然。

电话.h

#ifndef PHONE_IMEI_API
#define PHONE_IMEI_API
#include <string>
    class Phone {
        public:
            bool checkIMEI(std::string IMEI);
            void sort();
            std::string data[5] = {};
        } Phone;
#endif

电话C.cpp

#include "Phone.h";
bool Phone::checkIMEI(std::string IMEI)
{
    int IMEIlength = 15;
    int len, i, mul, sum, m10;
    len = IMEI.length();
    char chksum = IMEI[len];
    i = 0;
    if (len != IMEIlength)
        return false;
    mul = 2; sum = 0;
    for (i = len - 2; i >= 0; i--)
    {
        int currentNumber = static_cast<int>(IMEI[len]);
        if (currentNumber * mul >= 10)
            sum += ((currentNumber * mul) / 10) + ((currentNumber * mul) % 10);
        else
             sum += currentNumber * mul;
       if (mul == 2)
          mul = 1;
       else
          mul = 2;
    }
   m10 = sum % 10;
   if (m10)
       m10 = 10 - m10;

   if (m10 == chksum)
       return true;
   else
       return false;
}

主.cpp

#include <iostream>
#include <iomanip>
#include "Phone.h"
using namespace std;
int main(){
    string imei;
    cout << "Please enter an IMEI" << endl;
    cin >> imei;
    if (Phone.checkIMEI(imei))
    {
        cout << "Hello World";
    }
    return 0;
}

不确定我做错了什么,我尝试按照此官方文档中的文档进行操作,但仍然没有运气。 感谢您的任何明显建议,但没有完成C++课程

错误的是与类和对象名称相同的Phone。所以我所做的是

#ifndef PHONE_IMEI_API
#define PHONE_IMEI_API
#include <string>
    class Phone {
        public:
            bool checkIMEI(std::string IMEI);
            void sort();
            std::string data[5] = {};
        };
#endif

电话C.cpp

#include "Phone.h";
bool Phone::checkIMEI(std::string IMEI)
{
    int IMEIlength = 15;
    int len, i, mul, sum, m10;
    len = IMEI.length();
    char chksum = IMEI[len];
    i = 0;
    if (len != IMEIlength)
        return false;
    mul = 2; sum = 0;
    for (i = len - 2; i >= 0; i--)
    {
        int currentNumber = static_cast<int>(IMEI[len]);
        if (currentNumber * mul >= 10)
            sum += ((currentNumber * mul) / 10) + ((currentNumber * mul) % 10);
        else
             sum += currentNumber * mul;
       if (mul == 2)
          mul = 1;
       else
          mul = 2;
    }
   m10 = sum % 10;
   if (m10)
       m10 = 10 - m10;

   if (m10 == chksum)
       return true;
   else
       return false;
}

主.cpp

#include <iostream>
#include <iomanip>
#include "Phone.h"
using namespace std;
int main(){
    Phone phone;
    string imei;
    cout << "Please enter an IMEI" << endl;
    cin >> imei;
    if (phone.checkIMEI(imei))
    {
        cout << "Hello World";
    }
    return 0;
}

这似乎奏效了。如果有任何关于我为什么做错和做错什么的建议。请发布答案。或者我会将其标记为正确。-_-