Oto mój kod, a IDE jest Dev C++ 11O wskaźnik do funkcji składowej klasy pochodnej
#include<iostream>
using namespace std;
class A{
public:
int a=15;
};
class B:public A
{
};
int main(){
int A::*ptr=&B::a; //OK
int B::*ptr1=&A::a; //why?
int B::A::*ptr2=&B::a;//why?
int B::A::*ptr3=&A::a; //why?
}
Przeczytałem Języki programowania - C++ i wiem, rodzaj &B::a
jest int A::*
, ale nie rozumiem, dlaczego kolejne trzy linie przejdą kompilację. A najdziwniejszą rzeczą dla mnie jest składnia int B::A::*
, jakie jest tego znaczenie? Jestem tylko nowicjuszem C/C++
, więc proszę znieść moje dziwne pytanie.
@Ron Ahem .. It ** is ** [mcve]. 'ptr' jest typu' int A :: * ',' ptr2' jest typu 'int B :: A :: *', etc .. Jak widać: kod wysłany przez OP [kompiluje się dobrze] (http://ideone.com/Cz2Bmg), są po prostu zakłopotani tym, ** dlaczego ** to kompiluje. –
@ AlgirdasPreidžius True. Poprawiono mnie. – Ron
Dlaczego uważasz, że nie powinni przekazywać kompilacji? –