C ++ 친구 클래스의 개인 멤버 액세스

현인

2 개의 클래스 (firstClass와 secondClass)가 있는데, firstClass는 secondClass의 친구이고, private nested unordered_map을 가지고 있습니다. 따라서 기본적으로 코드는 다음과 같습니다.

    class secondClass;
    typedef unordered_map STable<unsigned, unordered_map<unsigned, double> > NESTED_MAP;


        class firstClass{
        friend class secondClass;
        void myfunc1(secondClass* sc){
            sc->myfunc2(&STable);
        }
        private:
            NESTED_MAP STable;
        };


        class secondClass{
        public:
            void myfunc2(NESTED_MAP* st){
            //Here I want to insert some elements in STable.
            //Something like:
            st[1][2]=0.5;
            }
        };
    int main(){
            firstClass  fco;
            secondClass sco;
            fco.myfunc1(&sco);
            return 0;

        }

사소해야한다는 것을 알고 있지만 어떻게 해결해야할지 모르겠습니다. 어떤 생각? (더 명확하게하기 위해 코드와 질문을 변경했습니다)

Skypjack

friend 클래스는 모든 private 멤버에 액세스 할 수 있으므로 public이었던 것처럼 메서드를 호출하고 속성을 수정할 수 있습니다.

여기 에 문서가 나와 있습니다.

friend 선언은 클래스 본문에 나타나며 friend 선언이 나타나는 클래스의 private 및 protected 멤버에 대한 함수 또는 다른 클래스 액세스 권한을 부여합니다.

즉, 귀하의 예 를 보면 myfunc2공개 되어서는 안되는 것처럼 보이기 때문에 friend 키워드 를 넣을 위치를 변경하고 싶습니다 .

위의 제안을 적용하고 친구 클래스의 개인 멤버 를 처리하는 방법을 보여주는 예제를 따릅니다 .

#include<unordered_map>

using namespace std;

class firstClass;

class secondClass{
    friend class firstClass;

private:
    void myfunc2(unordered_map<unsigned,double>& map){
        map[1]=0.5;
    }
};

class firstClass{
public:
void myfunc1(secondClass* sc){
    // here firstClass is accessing a private member
    // of secondClass, for it's allowed to do that
    // being a friend
    sc->myfunc2(STable);
}
private:
    unordered_map<unsigned,double> STable;
};

int main(){
    firstClass  fco;
    secondClass sco;
    fco.myfunc1(&sco);
    return 0;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

친구 클래스의 친구 함수를 활성화하는 방법 C ++에서 직접 비공개 멤버에 액세스하는 방법

분류에서Dev

C ++ 친구 클래스가 기본 클래스의 모든 멤버에 액세스 할 수 있습니까?

분류에서Dev

개인 구조체 데이터 멤버에서 C ++ 클래스 공용 멤버 함수에 액세스

분류에서Dev

C ++-친구 연산자는 개인 데이터 멤버에 액세스 할 수 없습니다.

분류에서Dev

C ++ 멤버 개체에서 인스턴스화 클래스의 다른 멤버에 액세스

분류에서Dev

친구 클래스가 중첩 클래스의 개인 멤버에 액세스하는 방법은 무엇입니까?

분류에서Dev

Pybind : C ++ 친구 클래스에서 포인트 값 액세스

분류에서Dev

친구 함수 및 네임 스페이스. 클래스의 개인 멤버에 액세스 할 수 없습니다.

분류에서Dev

C ++ 클래스에 친구 인 클래스 멤버가 포함될 수 있습니까?

분류에서Dev

C ++ | 파생 클래스는 자체 개인 멤버가 아닌 기본 클래스의 개인 멤버에 액세스합니다.

분류에서Dev

C ++에서 클래스의 멤버 인 명확한 구조체

분류에서Dev

친구 기능이 비공개 멤버에 액세스 할 수 없습니다.

분류에서Dev

다른 클래스의 멤버 함수 인 친구 함수로 값 설정

분류에서Dev

C ++에서 구동 클래스에 대한 포인터에서 중첩 클래스의 멤버에 액세스하는 방법

분류에서Dev

C ++의 클래스 내에서 개인 멤버에 액세스 할 수 없습니까?

분류에서Dev

C ++ std :: for_each 내부 클래스의 개인 멤버에 액세스하는 방법

분류에서Dev

C ++에서 상속 된 클래스의 개인 기본 멤버 변수에 어떻게 액세스합니까?

분류에서Dev

개체의 멤버에 액세스 void 포인터 C ++

분류에서Dev

컴포지션 또는 친구 클래스를 사용하여 다른 클래스의 멤버 함수를`this '클래스의 멤버 함수로 액세스

분류에서Dev

C ++ : 친구 클래스로 개체 인스턴스화 제한

분류에서Dev

C ++ 포인터를 사용하여 개체 멤버 액세스

분류에서Dev

공용 멤버 변수가 C ++에서 동일한 클래스의 개인 멤버에 액세스하도록 함

분류에서Dev

클래스의 비공개 멤버에 대한 액세스

분류에서Dev

C # 템플릿 클래스의 멤버 변수에 액세스

분류에서Dev

C #에서 대리자의 클래스 멤버에 액세스

분류에서Dev

파생 클래스 C ++의 전용 멤버에 액세스

분류에서Dev

다른 클래스에서 하나 개의 클래스의 액세스 멤버

분류에서Dev

친구 기능-멤버에 액세스 할 수 없습니다.

분류에서Dev

{친근한 클래스의 벡터}의 {벡터의 멤버}에 액세스

Related 관련 기사

  1. 1

    친구 클래스의 친구 함수를 활성화하는 방법 C ++에서 직접 비공개 멤버에 액세스하는 방법

  2. 2

    C ++ 친구 클래스가 기본 클래스의 모든 멤버에 액세스 할 수 있습니까?

  3. 3

    개인 구조체 데이터 멤버에서 C ++ 클래스 공용 멤버 함수에 액세스

  4. 4

    C ++-친구 연산자는 개인 데이터 멤버에 액세스 할 수 없습니다.

  5. 5

    C ++ 멤버 개체에서 인스턴스화 클래스의 다른 멤버에 액세스

  6. 6

    친구 클래스가 중첩 클래스의 개인 멤버에 액세스하는 방법은 무엇입니까?

  7. 7

    Pybind : C ++ 친구 클래스에서 포인트 값 액세스

  8. 8

    친구 함수 및 네임 스페이스. 클래스의 개인 멤버에 액세스 할 수 없습니다.

  9. 9

    C ++ 클래스에 친구 인 클래스 멤버가 포함될 수 있습니까?

  10. 10

    C ++ | 파생 클래스는 자체 개인 멤버가 아닌 기본 클래스의 개인 멤버에 액세스합니다.

  11. 11

    C ++에서 클래스의 멤버 인 명확한 구조체

  12. 12

    친구 기능이 비공개 멤버에 액세스 할 수 없습니다.

  13. 13

    다른 클래스의 멤버 함수 인 친구 함수로 값 설정

  14. 14

    C ++에서 구동 클래스에 대한 포인터에서 중첩 클래스의 멤버에 액세스하는 방법

  15. 15

    C ++의 클래스 내에서 개인 멤버에 액세스 할 수 없습니까?

  16. 16

    C ++ std :: for_each 내부 클래스의 개인 멤버에 액세스하는 방법

  17. 17

    C ++에서 상속 된 클래스의 개인 기본 멤버 변수에 어떻게 액세스합니까?

  18. 18

    개체의 멤버에 액세스 void 포인터 C ++

  19. 19

    컴포지션 또는 친구 클래스를 사용하여 다른 클래스의 멤버 함수를`this '클래스의 멤버 함수로 액세스

  20. 20

    C ++ : 친구 클래스로 개체 인스턴스화 제한

  21. 21

    C ++ 포인터를 사용하여 개체 멤버 액세스

  22. 22

    공용 멤버 변수가 C ++에서 동일한 클래스의 개인 멤버에 액세스하도록 함

  23. 23

    클래스의 비공개 멤버에 대한 액세스

  24. 24

    C # 템플릿 클래스의 멤버 변수에 액세스

  25. 25

    C #에서 대리자의 클래스 멤버에 액세스

  26. 26

    파생 클래스 C ++의 전용 멤버에 액세스

  27. 27

    다른 클래스에서 하나 개의 클래스의 액세스 멤버

  28. 28

    친구 기능-멤버에 액세스 할 수 없습니다.

  29. 29

    {친근한 클래스의 벡터}의 {벡터의 멤버}에 액세스

뜨겁다태그

보관