小编Bri*_*ian的帖子

C++类成员函数指针指向函数指针

我使用luabind作为我的lua到C++包装器.Luabind提供了一种方法来使用我自己的回调函数来处理lua,set_pcall_callback()抛出的异常.所以,我借从文档为例,变革中的logger->日志()函数,并把该函数在一个名为"引擎"类,所以代替它是一个常规的全局函数它是现在是一个成员函数,这是我的问题似乎在哪里.

以下是相关的代码剪辑:

class Engine //Whole class not shown for brevity
{
public:
    Engine();
    ~Engine();
    void Run();
    int pcall_log(lua_State*);
private:
    ILogger *logger;
};

Engine::Run()
{
lua_State* L = lua_open();
luaL_openlibs(L);
open(L);
luabind::set_pcall_callback(&Engine::pcall_log); //<--- Problem line
//etc...rest of the code not shown for brevity
}

int Engine::pcall_log(lua_State *L)
{
lua_Debug d;
lua_getstack( L,1,&d);
lua_getinfo( L, "Sln", &d);
lua_pop(L, 1);
stringstream ss;
ss.clear();
ss.str("");
ss << d.short_src;
ss << ": ";
ss << d.currentline;
ss << ": ";
if ( d.name != 0) …
Run Code Online (Sandbox Code Playgroud)

c++ casting function-pointers luabind

5
推荐指数
1
解决办法
6676
查看次数

C++对象构造函数通过const引用复制传递

当我将一个对象作为const引用传递给另一个对象时,是否有副本?我总是假设,因为我通过引用传递了对象,成员对象本身实际上是我传入的对象而不是副本.我做了一个测试程序,导致传入的引用对象在范围的末尾被销毁,但它没有像我预期的那样崩溃.这是一个等待发生的错误还是被复制的对象?

#include <iostream>
#include <string>

class Something
{
public:
    Something(const std::string& str) : mStr(str) {}
    const std::string& str() const
    {
        return mStr;
    }
private:
    std::string mStr;
};

int main()
{
    Something* something;
    {
        std::string temp = "Testing.";
        something = new Something(temp);
    }

    std::cout<<something->str()<<"\n";
    delete something;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该std :: string是否仍然有效或被删除?(在对象本身)

c++ constructor copy const reference

1
推荐指数
1
解决办法
2382
查看次数