Sou iniciante em programação e decide me aventurar num projeto com uns amigos, nele preciso que o programa descida qual a ordem da rotina baseado em um fator, estou passando para uma lista encadeada menor para facilitar a organização e ter que lidar com a classe inteira.
Entretanto estou achando problema para passar o método a função. Segue um código exemplo:
#include <iostream> #include <string> using namespace std; class Txt { string palavra; int tam; public: void load(string txt) { palavra = txt; tam = txt.length(); } void print() { cout << palavra << endl; }; int w_tam() { return tam; } }; class Info2 { public: int tam; void (*print)(); }; Info2 redirecionar(Txt txt) { Info2 info; info.tam = txt.w_tam(); info.print = &(txt.print); // aqui acontece um erro return info; } int main() { Txt A, B; A.load("Amor"); B.load("Bolota"); Info2 AA, BB; AA = redirecionar(A); BB = redirecionar(B); if (AA.tam > BB.tam) { AA.print(); } else { BB.print(); } }
Uso o VS2017, e o erro tem a seguinte descrição: ‘&’ operação inválida na expressão de função membro associada. Porém não consegui entender, vi a mesma ideia num outro tópico em C.