Этот код работает предсказуемо. Смотрите вокруг и всякие побочные эффекты.
#include <iostream>
#include <string>
class proc
{
private:
std::string _str;
public:
proc(const std::string str=""):_str(str){}
void add_line(const std::string& str)
{ _str += (str + "\n"); }
const std::string& get_str() const
{ return _str; }
};
int main()
{
void (proc::*al)(const std::string&);
al = &proc::add_line;
proc* runer = new proc("1. <start_line>\n");
// std::cout<<runer->get_str();
(runer->*al)("2. <new_line>");
std::cout<<runer->get_str()<<std::endl;
return 0;
}
ЗЫ. Если указатель надо хранить передавать см. std::mem_fn, а лучше - boost::function