2014-03-27 2 views
-1

클래스에 참조 변수를 추가하여 private 멤버로 선언 된 배열의 접근 자로 사용했습니다. 기본적으로 나는 비슷한 것을가집니다.클래스에 대한 참조를 접근 자로 추가

class someClass { 
private: 
    int a[3]; 
public: 
    int &a0; 
    int &a1; 
    int &a2; 
    someClass() : a0(a[0]), a1(a[1]), a2(a[2]) {} 

    someClass& operator=(const someClass &other) { 
     std::memcpy(a, other.a, sizeof(a)); 
     return *this; 
    } 
}; 

그러나 예상대로 항상 작동하지 않습니다. 내가 여기서 무엇을 놓치고 있니? 더 나은 .a0, .a1a의 요소에 액세스하는 방법 등 참조를 사용하는 대신

+3

당신이 얻는 행동은 무엇이며 예상되는 것은 무엇입니까? "예상대로 항상 작동하지 않습니다."매우 모호합니다 ... – fritzone

+0

1. 어떻게 작동하지 않습니까? 2. 왜 너는 왜 괴롭 히 느냐? 어쨌든 공개적으로 액세스 권한을 부여하는 경우'a' 공개하고이를 수행하십시오. – Angew

+1

이것은 [XY 문제] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) 인 것처럼 보입니다. 사용하려는 솔루션을 가지고 있습니다. 어떻게 작동하게 할 수 있겠지만, 솔루션으로 해결하고자하는 * 문제 *를 말하지 마십시오. 왜 이런 * * * 이유를 설명해 주시겠습니까? –

답변

2

이 거기에 대신 노동 조합에 혼합 사용을 고려해야합니다 :

struct Vector3 
{ 
    union { 
     float a[3]; 
     struct { float x, y, z; }; 
     struct { float r, g, b; }; 
    }; 
}; 

// v.a[0] is an alias for v.x 
Vector3 v = { 0.0f, 0.1f, 0.2f }; 

// you can see this clearly since they have the same address: 
std::cout << (&v.a[0] == &v.x) << std::endl; 

이것은 당신이 실제로 원하는 것을 제공해야한다 달성하기.

관련 문제