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

Stały wskaźnik na obiekt jako parametr funkcji

Ostatnio zmodyfikowano 2016-09-28 02:21
Autor Wiadomość
filipbaza
Temat założony przez niniejszego użytkownika
Stały wskaźnik na obiekt jako parametr funkcji
» 2016-09-25 12:13:10
Mam zdefiniowane dwie klasy i w jednej z nich jest metoda, która powinna jako parametr przyjmować stały wskaźnik na obiekt drugiej klasy.
Nie mogę sobie poradzić z błędem, który stwarza słowo "const". Gdy je usunę program się kompiluje.
W ciele funkcji zapisuje pobrane wskaźniki do tablicy.

C/C++
int A::insert( const B * pObiekt )
{
    ...
    return 0;
}
 
[Error] invalid conversion from 'const B*' to 'B*' [-fpermissive]
P-151981
Gibas11
» 2016-09-25 12:38:16
Pewnie masz tablicę zwykłych wskaźników a nie stałych, pokaż linię gdzie wywala błąd.
P-151983
pekfos
» 2016-09-25 12:42:42
która powinna jako parametr przyjmować stały wskaźnik na obiekt drugiej klasy
Stały wskaźnik to nie to samo, co wskaźnik na stałą. W tym przypadku stałość wskaźnika nic nie zmienia, więc po prostu wywal te const.
P-151985
filipbaza
Temat założony przez niniejszego użytkownika
» 2016-09-25 13:23:51
Pomyłka w temacie...
Chodzi o wskaźnik na stałą.
C/C++
class CA
{
private:
public:
    CB ** pTablica;
    int m_Szerokosc;
    CA( int );
    CA( const CA & );
    int insert( const CB * );
};

CA::CA( int szerokosc )
{
    if( szerokosc <= 0 ) m_Szerokosc = 1;
    else m_Szerokosc = szerokosc;
   
    pTablica = new CB *[ m_Szerokosc ];
   
}

int CA::insert( const CB * pObiekt )
{
    static int i = 0;
    if( i <= m_Szerokosc )
    {
        pTablica[ i ] = pObiekt; //BŁĄD WYWALA W TEJ LINIJCE, ALE TYLKO WTEDY GDY JEST CONST
        i++;
    }
    return 0;
}
P-151987
pekfos
» 2016-09-25 13:47:59
C/C++
CB ** pTablica;
Dodaj const.
P-151990
filipbaza
Temat założony przez niniejszego użytkownika
» 2016-09-25 13:58:19
Dodałem const do tych dwóch linijek:
C/C++
pTablica = new const CB *[ m_Szerokosc ];

const CB ** pTablica;

Działa. Dzięki!
P-151992
filipbaza
Temat założony przez niniejszego użytkownika
» 2016-09-25 22:36:49
Chciałbym teraz po utworzeniu tej tablicy zrobić tak żeby do każdego wskaźnika przypisać wartość NULL.
(taki jakby stan początkowy, potrzeby żeby rozróżnić czy dany element tablicy jest wolny czy nie)

C/C++
pTablica = new const CB *[ m_Szerokosc ];
for( int i = 0; i < m_Szerokosc; i++ )
{
    pTablica[ i ] = NULL;
};

Czy to jest poprawne?
P-152032
filipbaza
Temat założony przez niniejszego użytkownika
» 2016-09-26 12:59:11
A jak zwrócić w funkcji wskaźnik na stały obiekt?
Mam wypełnioną tę tablicę wskaźników na stałe obiekty.

C/C++
pTablica = new const CB *[ m_Szerokosc ];

Chcę teraz zadeklarować metodę, która pobiera numer elementu tej tablicy i zwraca wskaźnik który się tam znajduje.
Próbuję w taki sposób.
definicja:
C/C++
CB * Adres( int );
deklaracja:
C/C++
CB * CA::Adres( int n )
{
    return( pTablica[ n ] );
}

i dostaje taki błąd: invalid conversion from 'const CB*' to 'CB*' [-fpermissive]
P-152042
« 1 » 2
  Strona 1 z 2 Następna strona