Dica: evite usar “struct”, mesmo que você só tenha membros públicos. É que em C++, “struct” é exatamente a mesma coisa que “class”, mas a visibilidade default dos membros é “public”.
Evite também usar typedef. Use typedef apenas e tão somente para criar sinônimos de tipos complicados (como map<string, int>::const_iterator ou coisas mais complicadas).
Dê uma olhada no seu código, e veja como ficou.
#include<iostream>#include<string>usingnamespacestd;template<classT>classList{protected:classNode{public:Node*pAnt;Titem;Node*pProx;public:// não se esqueça de definir um construtor para Node, isto vai salvar sua vidaNode():pAnt(0),pProx(0){}};private:Node*firstNode;Node*lastNode;intlistSize;public:List(){//Faz uns códigos. listSize=0;}~List(){delete(firstNode);listSize=-1;}voidAdd(Titem){this->lastNode=newNode();this->lastNode->item=item;// o original tinha "nodeItem" que não está definido em Nodethis->firstNode->pAnt->pProx=this->lastNode;this->lastNode->pAnt=this->firstNode->pAnt;this->firstNode->pAnt=this->lastNode;this->listSize++;}};classCustomer{public:stringname;doubleincome;public:Customer(){}Customer(stringname_,doubleincome_):name(name_),income(income_){}Customer(constCustomer&other):name(other.name),income(other.income){}Customer&operator=(constCustomer&other){name=other.name;income=other.income;return*this;}stringtoString(){returnname;}};intmain(intargc,char*argv[]){List<Customer>customers;customers.Add(Customer("Abdias",100));customers.Add(Customer("Moises",200));return0;}
Para mais detalhes, olhe a documentação do seu compilador, que deve indicar que versão do C++ ele implementou, e quais recursos estão disponíveis. Mas properties não existem, mesmo na próxima versão do C++ (conhecida por “C++0X”).
Para não dizer que não existem properties em linguagens derivadas do C++, você pode estudar C++/CLR (uma linguagem da Microsoft que é derivada do C++ mas é feita para gerar bytecodes do .NET), que tem properties. Mas a C++ mesmo não tem properties.
Nicolas_Fernandes
Entendi.
Agora, uma dúvida meio boba!
Tenho uma classe Mãe e uma Filha.
Se eu quero acessar membros protegidos da Mãe por intermédio da Filha, eu deveria fazer:
classFilha : protectedMae {
//...
}
Ou poderia simplesmente colocar:
classFilha : publicMae {
//...
}
??
Desde já, agradecido!
E
enantiomero
A menos que você saiba o que está fazendo, sempre use a herança pública:
classX : publicY {
};
A herança privada ou “protected” só deve ser usada em casos especiais, e usar um membro protegido não é um desses casos especiais.