Abstract class

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all

this code work on windows, and can compile with Visual studio 2003 c++, but
width g++, i get error:

In function ‘int main(int, char**)’:
:62: error: no matching function for call to
‘api_cntx::dispatch(session_cntx_impl)’
:42: note: candidates are: int api_cntx::dispatch(context_fnc&)

#include <iostream>
using namespace std;


class session_cntx
{
public:
	session_cntx(){};
};

class context_fnc
{
public:
    context_fnc() {};

    virtual void exec() = 0;
};

class session_cntx_impl : public context_fnc
{
public:
    session_cntx_impl(int  ctx) : m_ctx(ctx) {}

    virtual void exec();

private:
    int m_ctx;
};

void session_cntx_impl::exec()
{
	//
}

class api_cntx
{
public: api_cntx(){};

    int dispatch(context_fnc& func) throw();
};

int api_cntx::dispatch(context_fnc& func) throw()
{
    try
    {
        func.exec();
    }
    catch (...)
    {

    }

    return 0;
}

int main(int argc, char* argv[])
{
	session_cntx ctx;

	api_cntx *tmp = new api_cntx();

	tmp->dispatch(session_cntx_impl(5));

	return 0;
}

If i put const into dispatch function, i get new error:
: In member function ‘int api_cntx::dispatch(const context_fnc&)’:
:46: error: passing ‘const context_fnc’ as ‘this’ argument of ‘virtual void
context_fnc::exec()’ discards qualifiers


Please help me.

BR
Kolesar
-- 
View this message in context: http://www.nabble.com/Abstract-class-tp21156603p21156603.html
Sent from the gcc - Help mailing list archive at Nabble.com.



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux