Stały wskaźnik na obiekt jako parametr funkcji
Ostatnio zmodyfikowano 2016-09-28 02:21
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. int A::insert( const B * pObiekt ) { ... return 0; } [Error] invalid conversion from 'const B*' to 'B*' [-fpermissive] |
|
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. |
|
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. |
|
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łą. 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; i++; } return 0; }
|
|
pekfos |
» 2016-09-25 13:47:59 |
|
filipbaza Temat założony przez niniejszego użytkownika |
» 2016-09-25 13:58:19 Dodałem const do tych dwóch linijek: pTablica = new const CB *[ m_Szerokosc ];
const CB ** pTablica;
Działa. Dzięki! |
|
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) pTablica = new const CB *[ m_Szerokosc ]; for( int i = 0; i < m_Szerokosc; i++ ) { pTablica[ i ] = NULL; };
Czy to jest poprawne? |
|
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. 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: deklaracja: CB * CA::Adres( int n ) { return( pTablica[ n ] ); }
i dostaje taki błąd: invalid conversion from 'const CB*' to 'CB*' [-fpermissive] |
|
« 1 » 2 |