Ir para conteúdo
Fórum Script Brasil

Cantagalo

Membros
  • Total de itens

    6
  • Registro em

  • Última visita

Sobre Cantagalo

Cantagalo's Achievements

0

Reputação

  1. Olá Amigos... Estou com a seguinte dúvida: Como criar uma função com um número indefinido de parâmetros, considerando que estes parametros são arrays? Testei duas variantes, a primeira foi: void Fonts (int i, ...) { va_list Parameter; va_start(Parameter, i); for (int j = 0; j < i; j++) { va_arg (Parameter, const char *); Font[j] = new Font (Parameter); } } int main (); { ... Font * Font[2]; Fonts (2, "1981.fnt","font1.fnt"); ... } E neste caso o arquivo é compilado, porém aparentemente apenas a primeira letra do nome do arquivo .fnt é passada e assim a fonte não é criada corretamente. A segunda maneira que tentei foi: void Fonts (int i, ...) { va_list Parameter; va_start(Parameter, i); for (int j = 0; j < i; j++) { va_arg (Parameter, const char * [] ); Font[j] = new Font (Parameter); } } int main (); { ... Font * Font[2]; Fonts (2, "1981.fnt","font1.fnt"); ... } Porém, esta versão não compilou e recebeu o seguinte aviso: invalid use of array with unspecified bounds Como podem ver, estou tentando criar uma função que carregue várias fontes de uma vez, utilizando a função: Font (arquivo.fnt). Caso você tenha uma sugestão de como resolver ou contornar o problema eu agradeço desde já! Valeu! Cantagalo.
  2. Realmente.. minha versão é a 3.0! Agradeço a ajuda, vou seguir suas dicas! Um abraço!
  3. Desculpa, achei que nesta questão em expecífico o código seria irrelevante... Segue, então, o código: #include <iostream.h> class Mammal { public: Mammal():itsAge(1) { cout << "Mammal constructor...\n"; } ~Mammal() { cout << "Mammal destructor...\n"; } virtual void Speak() const { cout << "Mammal speak!\n"; } protected: int itsAge; }; class Cat : public Mammal { public: Cat() { cout << "Cat constructor...\n"; } ~Cat() { cout << "Cat destructor...\n"; } void Speak () const { cout << "Meow\n"; } void Purr () const { cout << "Rrrrrrrrrrr\n"; } }; class Dog : public Mammal { public: Dog() { cout << "Dog constructor...\n"; } ~Dog() { cout << "Dog destructor...\n"; } void Speak () const { cout << "Woof\n"; } }; int main () { const int NumberMammals = 3; Mammal *Zoo[NumberMammals]; Mammal *pMammal; int choice, i; for (i = 0; i < NumberMammals; i++) { cout << "(1) Dog (2) Cat: "; cin >> choice; if (choice == 1) pMammal = new Dog; else pMammal = new Cat; Zoo = pMammal; } cout << "\n"; for (i = 0; i < NumberMammals; i++) { Zoo -> Speak(); Cat *pRealCat = 0; pRealCat = dynamic_cast <Cat*> (Zoo); if (pRealCat) pRealCat -> Purr(); else cout << "uh oh, not a cat!\n!"; delete Zoo; cout << "\n"; } return 0; } Agradeço a atenção!
  4. Olá e desde já agredeço a boa alma que me ajudar! Estou utilizando o Turbo C++ com o compilador da Borland e quando utilizo o operador dynamic_cast recebo o seguinte retorno: undefined symbol 'dynamic_cast' O que será que esta errado? Até mais!
  5. Respondeu sim... na verdade foi um engano meu... O que ocorre é que quando a instrução é if estamos dizendo ao compilador: "Se isto e isto ...", ou seja, quando ambos ocorrerem faça algo. Agora quando usamos while dizemos: "Enquanto isto e isto ...", ou seja, quando algum destes for violado, pare. devia ter lido uma tradução literal do código e assim não teria tido que tomar seu tempo! Agradeço muito a atenção! Um abraço!
  6. Gostaria de postar uma dúvida de cunho filosófico e pessoal que tenho sobre o C++. O operador and (&&) em diferentes circunstancias tem efeitos distintos. Por exemplo, se você utiliza o && em uma instrução if ela apenas executa o código condicional se ambas as instruções relacionadas por && forem verdadeiras. Porém, caso utilize o mesmo operador em uma instrução while o código condicional será executado quando qualquer uma das condições vinculadas por && forem verdadeiras. Minha questão é, porque essa interpretação ambígua sobre o operador && é utilizada pelo compilador? Agradeço a atenção!
×
×
  • Criar Novo...