Note
의 QSharedPointer 요소가 포함 된 m_noteList
이라는 QList 멤버 변수가 있습니다. 새 메모를 작성하는 경우QList 및 QSharedPointer의 참조 된 요소에 대한 액세스
private:
QList< QSharedPointer<Note> > m_noteList;
, 해당 참조 목록에 추가됩니다 :
각 주-요소에 대해void Traymenu::newNote(){
QSharedPointer<Note> note(new Note(this));
m_noteList << note;
}
이 whichs 포인터가 m_noteList에, 나는 그것의 제목을 얻고 그것을 추가 할 내 contextmenu. 목적 메모를 열고 해당 제목을 클릭하는 것입니다
for (int i = 0 ; i < m_noteList.count() ; i++) {
std::string menuEntryName = m_noteList[i].getTitle();
QAction *openNote = m_mainContextMenu.addAction(menuEntryName);
}
내가
C:\project\traymenu.cpp:43: Fehler: 'class QSharedPointer<Note>' has no member named 'getTitle'
std::string menuEntryName = &m_noteList[i].getTitle();
^
는 기본적으로 나는 m_noteList
에서 참조하는 개체에 대한 액세스를 얻으려면 오류가 발생합니다. 어떻게해야합니까? 나는 그 요소에 접근하기 위해 m_noteList[i]
으로 생각했지만, 분명히 컴파일러는 QSharedPointer
타입의 무엇인가를 기대하고있다. 왜?
목처럼 뭔가를 할 수 e 오류는'QSharedPointer'가'getTitle' 메소드를 가지고 있지 않다고 말합니다. 사실입니다. 'Note' 클래스의 멤버에 액세스하기 위해 포인터를 역 참조해야합니다 :'m_noteList [i] .data() -> getTitle(); ' – Kiwi
아, 그래서 이것이 작동하는 방식입니다. 고마워요, 대답을 올리시겠습니까? – user2366975