2017-03-25 4 views
0

객체에 16 진수 값을 지정하려면 : 내 이해하면C++ - 오버로드 '='내가 같은 색상의 개체 진수 할당 유사한 시스템을 구현하기 위해 노력하고있어

Color color; 
color = 0xffff00; 

운영자 '올바른 = '가 오버로드되어 실제로 Color 내부의 데이터 유형에 16 진수 값을 저장합니다. 난 정말이 작업을 수행하는 방법을 이해하지만, 여기에 내가 가진 무엇을하지 않습니다 는

Color operator=(const unsigned int& c) { 
    Color color; 
    color.data = c; 
    return color; 
} 

이 내가 필요한 걸 줄 것이라고 ("데이터"라는 3 바이트 형식 정의에 색상을 저장 컬러를 가정)?

+0

값이 반드시 16 진수는 아닙니다. '0xffff00'는 단지'int' 리터럴입니다. 'color = 31; '이라고 쓸 수도 있습니다. – Barmar

+0

16 진수가 숫자라는 것을 알고 있습니다. 그래서 내 오버로드 예제에서 부호없는 int를 사용했습니다 – user6191359

+0

그렇다면 질문은 무엇입니까? – Vallentin

답변

0

이 같은뿐만 아니라 클래스의 대입 연산자와 아마 생성자를 오버로드해야합니다

Color c = 0x00FF00; 

: 생성자를 오버로드

class Color 
{ 
public: 
    Color(): data(0) {} 
    Color(unsigned i): data(i) {} // add an int constructor 

    // add assignment operator 
    Color& operator=(unsigned i) { data = i; return *this; } 

private: 
    unsigned data; 
}; 

이 같은 초기화를 수행 할 수 있습니다 대입 연산자를 오버로딩하면 초기화 후 할당 할 수 있습니다.

c = 0xFF00FF; 
0

멤버 함수로 구현하는 것이 더 좋을 것이라고 생각합니다. 따라서 새 함수를 만들고 복사하는 대신 개체를 제 위치에서 수정할 수 있습니다.

class Color { 
    ... 
    public: 
     void operator= (const unsigned int &c) { 
      data = c; 
     } 
    ... 
}