Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przypisanie obiektu do wskaźnika

Ostatnio zmodyfikowano 2016-04-07 21:00
Autor Wiadomość
emSon
Temat założony przez niniejszego użytkownika
Przypisanie obiektu do wskaźnika
» 2016-04-06 20:07:28
Witam.

Chciałbym, aby wskaźnik z std::vector'a wskazywał na obiekt, który narazie tworzę tak:

C/C++
m_interactables[ 0 ]->GetRect() = new sf::RectangleShape();

Jednak wyświetla się komunikat:


error: lvalue required as left operand of assignment

Potrzebny kod:

C/C++
std::vector < GUIInteractable *> m_interactables;

C/C++
//GUIInteractable.cpp
sf::RectangleShape * GUIInteractable::GetRect()
{
    return m_rect;
}

C/C++
//GUIInteractable.h
sf::RectangleShape * m_rect;

Co robię źle? :)
P-147030
1aam2am1
» 2016-04-06 20:19:49
Zwracaj wskaźnik przez referencje.
P-147031
emSon
Temat założony przez niniejszego użytkownika
» 2016-04-06 21:17:48
Nie działa :/


In member function ‘virtual void GUIWindowOne::Init(sf::Font&)’:
error: no match for ‘operator=’ (operand types are ‘sf::RectangleShape’ and ‘sf::RectangleShape*’)
note: candidate: sf::RectangleShape& sf::RectangleShape::operator=(const sf::RectangleShape&)
note:   no known conversion for argument 1 from ‘sf::RectangleShape*’ to ‘const sf::RectangleShape&’
note: candidate: sf::RectangleShape& sf::RectangleShape::operator=(sf::RectangleShape&&)
note:   no known conversion for argument 1 from ‘sf::RectangleShape*’ to ‘sf::RectangleShape&&’

Zmieniłem funkcję na:

C/C++
sf::RectangleShape & GUIInteractable::GetRect()
{
    return * m_rect;
}
P-147032
1aam2am1
» 2016-04-06 21:35:12
C/C++
sf::RectangleShape *& GUIInteractable::GetRect()
{
    return m_rect;
}
P-147033
emSon
Temat założony przez niniejszego użytkownika
» 2016-04-06 21:53:16
C/C++
sf::RectangleShape &* GetRect();


error: cannot declare pointer to ‘class sf::RectangleShape&’
P-147034
Kaikso
» 2016-04-06 22:01:43
Bo to ma być referencja do wskaźnika, a nie wskaźnik do referencji (takiego nie ma):

C/C++
sf::RectangleShape *& GUIInteractable::GetRect()
{
    return m_rect;
}
P-147035
mokrowski
» 2016-04-07 10:58:15
Jeśli nie masz wyjścia, to zwracaj taką "matrioszkę" z referencją na wskaźnik. Jeśli jednak masz wyjście, rozważ pracę na referencjach lub stosowanie wskaźników inteligentnych (shared_ptr, unique_ptr). Dziś raczej jawnego ("gołego") new i delete należy unikać.
P-147040
emSon
Temat założony przez niniejszego użytkownika
» 2016-04-07 15:21:18
mokrowski, możesz rozwinąć wypowiedź? Dlaczego powinno się tego unikać i jak by te referencje czy shared_ptr wyglądało?
P-147043
« 1 » 2
  Strona 1 z 2 Następna strona