2015-02-02 3 views
0

Phone.h이라는 헤더 파일 안에 클래스를 만들었습니다. Phone.h에서 함수를 정의한 PhoneC.cpp이 있고 그 다음으로는 int main.cpp이 있는데, 이는 int 메인을 선언하는 곳입니다. 내가C++ 헤더 파일 및 CPP 파일

one or more multiply defined symbols found 

의 오류를 얻고 있지만 나는 이것이 무엇을 의미하는지 너무 확실하지 않다이나 다른 포스트는 수정 노골적으로 충분히 무엇인지에 대해 설명했다.

Phone.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 

PhoneC.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; 

} 

MAIN.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; 
} 

내가 WRO했던 무엇인지 확실하지 않기 ng 나는 아직도 this official documentation에서 문서를 따라 가려고 노력했다. 어떤 명백한 제안을 주셔서 감사합니다. C++의 수업으로 끝나지 않았습니다.

+0

phone.H,'class Phone {...} 전화; '는 새로운 C++입니다. 제가 familliar가 아닙니다. – John3136

+0

http://www.cplusplus.com/doc/tutorial/classes/ 내가 그 위치에서 얻은 것입니다. 두 번째 결정은 개체 이름입니다. 그래서 나는 Phone to Cell을 바꿀 수 있었고 Cell.checkIMEI (imei)를 바꿀 수있었습니다. 적어도 이것은 내가 바보처럼 때리는 것을 잘못 읽었을 때 읽은 것입니다. – EasyBB

+0

Havent는 자신을 테스트하기 위해 코드를 실행하지만, "somehwat"셀에 두 번째 전화를 변경하면 문제가 해결 될 수 있습니다. 컴파일러는 아마 거기에 같은 이름을 가진 두 가지 일을함으로써 혼란 스러울 것입니다. – Jason

답변

0

무엇이 잘못 되었습니까? Phone이 (가) 클래스 및 객체 이름과 동일합니다. 그래서 내가 한 것은 PhoneC.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; 

} 

MAIN.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; 
} 

#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 

이었다 그리고 그 일을 보였다. 왜 그리고 내가 뭘 잘못했는지에 대한 제안. 답변을 게시하십시오. 아니면이 부분을 올바른 것으로 표시합니다. -_-