#include <windows.h>
#include <iostream>
#include <time.h>
using namespace std;
// declaramos que existe uma classe com esse nome
class FuzzyCall;
// ponteiro para métodos da classe acima
typedef void (FuzzyCall::*FP_Fuzzy)();
/** Classe que faz chama um método aleatório. */
class FuzzyCall
{
public:
FuzzyCall()
{
srand(GetTickCount()); // chacoalha o saco de bingo
}
FP_Fuzzy GiveMeAMethod() { return m_methods[rand() % 3]; }
private:
void MethodOne() { cout << "One!n"; }
void MethodTwo() { cout << "Two!n"; }
void MethodThree() { cout << "Three!n"; }
static FP_Fuzzy m_methods[3];
};
/** Array com os métodos que podem ser chamados aleatoriamente. */
FP_Fuzzy FuzzyCall::m_methods[3] = { &MethodOne, &MethodTwo, &MethodThree };
/** Recebe um ponteiro para um método de FuzzyCall e chama com um objeto local. */
void passThrough(FP_Fuzzy pMethod)
{
FuzzyCall fuzzyObject; // esse é o objeto local
( fuzzyObject.*pMethod )(); // essa é a chamada
}
/** No princípio Deus disse: 'int main!'
*/
int main()
{
FuzzyCall fuzzyObject1;
FP_Fuzzy pMethod;
// pegamos um método da classe qualquer
pMethod = fuzzyObject1.GiveMeAMethod();
// e passamos para uma outra função
passThrough(pMethod);
}error C4867: 'FuzzyCall::MethodOne': function call missing argument list;
use '&FuzzyCall::MethodOne' to create a pointer to memberFuzzyCall fuzzyObject; // esse é o objeto local
FuzzyCall* pFuzzy = &fuzzyObject; // ponteiro para esse mesmo objeto
( fuzzyObject.*pMethod )(); // [objeto] .* [ponteiro de método]
( fuzzyObject->*pMethod )(); // [ponteiro para objeto] ->* [ponteiro de método]Todas as matérias de Redação Oficina da Net
O computador terá o tamanho que você quiser. Poderá ser do tamanho da .
Aqui veremos como aplicar uma tatuagem a qualquer pessoa de uma maneir.
Público é um item fundamental para se ter um site. De que adianta você.
Veja como transformar suas imagens em quebra cabeças de uma maneira be.
Olá pessoal, estou aqui para mais uma vídeo aula, desta vez vou mostra.
Aprenda como inserir e remover pela esquerda e pela direita em um dequ.
Função é conjunto de comandos agrupados em um bloco que recebe um nome.
C++ tem recebido uma quantidade enorme de críticas. Ainda assim, entre.
Bom, essa é uma primeira abordagem sobre o ambiente no qual programei .
Constantes - Arquivos de Cabeçalho
© 2005 - 2009 - Oficina da Net - v 4.0 - É proibida a reprodução parcial ou completa do conteúdo deste site sem autorização por escrito. Resolução adequada: 1024x768px.
Gabriel
- Publicado em: 05/12/2008 - 13:04
Ola eu gostei desse postutorial!!! E em C++ e ta tudo bem explicado!!! Mas ta no estagio "avançadinho"!! pra quem ta começando em C tem que pegar umas coisa mais leve,tipo: Para obter ponteiros a métodos ou funções sobrecarregadas, como exemplo: class Foo { public: void bla(int a); int bla() const; }; Se tentarmos usar o nome da função diretamente, o compilador não saberá a qual dos métodos você se refere. Para sair da ambiguidade, necessitamos usar a “assinatura” (os tipos dos parâmetros e do valor retornado) da função indiretamente, possivelmente com o uso de variáveis temporárias: void (Foo::*ptr1)(int)= &Foo::bla; int (Foo::*ptr2)() const= &Foo::bla;