Skip to content

Instantly share code, notes, and snippets.

@rodrigoavalente
Last active August 29, 2015 14:17
Show Gist options
  • Save rodrigoavalente/ddeb8424dadd6b44f2b6 to your computer and use it in GitHub Desktop.
Save rodrigoavalente/ddeb8424dadd6b44f2b6 to your computer and use it in GitHub Desktop.
Classes auxiliares

O uso da classe range será exclusivamente de matrix, por este motivo decidi que ela deveria ser implementada dentro do escopo da classe, já que ela é um comportamento da mesma. A ideia surgiu de implementações de árvores binárias e listas encadeadas, ambas as classes possuem objetos que auxiliam e caracterizam o comportamento da mesma, no caso da árvore seria uma classe ou struct node(nó) e no caso da lista uma classe ou struct cell(célula). Essas classes não tem significado fora da classe que as implementam e são completamente inúteis. No caso gostaria que a implementação seguisse os seguintes padrões para classes auxialres:

class C {
public:
    C() (sometype somearg) : somemember(somearg) {}; /*A implementação dos construtores deve ser feita em lista, isso                                                                facilita o C++ a reconhecer os objetos.*/
    ~C();
            
    void somemethod();
            
    //A classe será pública se, e somente se, você precisar chamar ela fora do escopo da classe.
    class publicAuxClass {
        friend class C //Em caso da classe necessitar acessar elementos privados.
            public:
            publicAuxClass(sometype somearg) : publicAuxClass_member(somearg) {};
                
            sometype somemember(sometype args); /*Deixe as implementações no cpp, com excessão do construtor que deve ser de                                                     lista e constar no .h*/
                
            /*Os membros devem ser públicos ou privados de acordo com a utilidade da classe, se forem privados a classe deve                   ser friend da classe auxiliar.*/
            sometype publicAuxClass_member;
        }
            
        private:
        /*A classe deverá ser private se, e somente se, você utiliza-lá para definir um comportamento mais específico
        da classe em questão, nesse caso a classe deve possuir um ponteiro da classe auxiliar como membro privado.*/
            
        class privateAuxClass {
            
        //As definições devem ser feitas conforme a publicAuxClass.
        }
            
        privateAuxClass* aux; //Para poder usar as caraterísticas da classe privada.
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment