2013-04-25 2 views
0

여기 내 문제가 있습니다. 우리는 모든 일을 할 수있는 수업이 있다고 말하지만, 그것을 사용할 때 다른 이름을 갖고 싶습니다. 다음은 내가 의미하는 예입니다.C++ 클래스 멤버의 아이디어 이름을 바꿉니 까?

class A 
{ 
public: 
    int m_Value; 

    A(); 
    ~A(); 
    void Func1(); 
    void Func2(); 
    // ... so on 
}; 

이제 해당 클래스의 개체를 만들고 사용하십시오.

void main() 
{ 
    A obj1; 
    A obj2; 

    obj1.m_NewName1 = 5; // obj1.m_Value has to be changed to obj1.m_NewName1 
    obj2.m_NewName2 = 1; // 
} 

이 작업을 수행 할 수 있습니까?

class C : public A 
{ 
public: 
    int &newName1; 
    C() : newName1 (A::m_Value) 
    { 
    } 
    //Add some copy consructor and assignment operator 
}; 

지금 100 클래스의 이름이 변경 될이 고려 :

내가이 뭔가를 할 수 있습니다. 매우 편리하지 않음

+0

아니요 (..............) –

+2

* 왜? * 합리적인 해결책이 될 수있는 한 가지 문제는 생각할 수 없습니다. – molbdnilo

+1

다른 코드에서 어떻게 사용합니까? 어떤 개체가 어떤 이름을 사용했는지 추적해야합니다. 구현을 변경하면 변경할 필요가 없도록 캡슐화하고 유니폼 인터페이스를 제공하는 것이 가장 좋습니다. –

답변

0

클래스에 정의 된 변수 이름을 변경할 수 없습니다. !!!

0

이것은 클라이언트 코드에서 수행 할 수 없습니다. 다른 값을 이름으로 나타내려면 그 값에 std :: map 매핑 이름을 사용하는 것입니다.

0

다음 작업을 수행 할 예정입니까?

class A 
{ 
public: 
    int a; 
    int& ref_a; 
    A(int i): a(i),ref_a(a) 
    {`enter code here` 
    } 

    A(): ref_a(a) 
    { 
    } 

}; 

int main() 
{ 
    A objA(100); 
    printf("%d\n",objA.a); 

    objA.ref_a = 10; 
    printf("%d\n",objA.a); 

    return 0; 
} 
+0

No. 클래스 A는 변경하거나 참조 및 멤버를 추가하면 안됩니다. 아마도 MACRO를 사용할 수는 있지만 솔직히 어떻게해야할지 모르겠다. – user1841698

+0

실용적인 시나리오가 필요하십니까? 그러면 우리가 도울 수있을거야. – Jack

관련 문제