小编App*_*ker的帖子

是否需要构建boost.signals2库?

我的系统在构建boost库时遇到了问题.据我所知,大多数boost库(幸运的是)只是不需要构建的头文件(有一些例外).是否需要构建boost :: signals2库?boost.signals2库是否依赖于boost.signals库?

c++ boost boost-signals boost-signals2

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

C++解析器源代码中的原因不明的错误

这个函数检查用户输入的函数名称到我正在进行的解释器/解析器中,将它与函数数组进行比较,并执行相应的C++函数.只要用户输入正确的函数名称,它就可以正常工作,但是如果没有用户输入的名称功能,解释器会以一些无法解释的运行时错误结束,即使我将其编程为打印"未定义函数"然后继续解析循环:

void parser::eval_cmd(std::string& exp, pro::command fset[])
{
    expr = exp;
    exp_ptr = (char*) expr.c_str();

    bool found = false;

    for (int i = 0; i < (int)sizeof(fset); i++)
    {
        if (fset[i].check(expr))
        {
            found = true;
            exp_ptr = (char*)expr.c_str() + (fset[i].name.size() - 1);
            if (fset[i].cmd)
                fset[i].cmd(eval_args());
            break;
        }

    }

    if (!found) err::show(err::UNDEFINED);
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

c++ arrays parsing for-loop runtime-error

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

你如何在Gtk中制作一个更少的标题窗口?

我想在Gtk中创建一个Window(Gtk#是特定的,但GTK +或任何其他绑定都可以,函数通常是相同的)没有标题.有点像Mozilla Firefox 4和Google Chrome.我不知道该怎么称呼,标题少或标题上的小部件?任何帮助?谢谢

c c# gtk gtk#

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

你如何在Java中使用内部静态变量?

有没有办法在Java中使用内部静态变量?例如,拿这个C代码:

void increment(){
    static int i = 0;
    i++;
    printf("%i",i);
}
Run Code Online (Sandbox Code Playgroud)

我怎么用Java做这个?

java variables syntax static

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

使用具有泛型类型的Parse方法?

直接代码:

class ArithmeticExpressionParser<T> : Parser
{
    T num1, num2;

    /* ......... */

    void ParseNumber()
    {
        string temp = String.Empty;

        while (char.IsDigit(PeekNextToken()))
        {
            GetNextToken();
            temp += Token;
        }

        num1 = T.Parse(temp);  // <<< the problem
    }
Run Code Online (Sandbox Code Playgroud)

基本上,如果我正在使用intdouble我只是使用int.Parse等我已经尝试了铸造num1 = (T)temp;,这是行不通的.我怎样才能做到这一点,而无需编写自定义stringT发挥作用?

c# generics parsing c#-4.0

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

使用std :: strings和c-style字符串时如何使用模板?

当我尝试这样做时,我只是在搞乱模板:

template<typename T> void print_error(T msg)
{
#ifdef PLATFORM_WIN32
    ::MessageBox(0, reinterpret_cast< LPCSTR >(msg), "Error", MB_ICONERROR|MB_OK);
#else
    cout << msg << endl;
#endif /* PLATFORM_WIN32 */
}
Run Code Online (Sandbox Code Playgroud)

当然,如果你通过std::stringas,这显然是行不通的T.因为字符串不能转换为a char*,但是这个函数是否可以以允许我传递c样式char*数组和c ++ std::string作为参数的方式进行编码,并将它们转换为LPCSTR

c++ string templates cstring lpcstr

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

防止对象过早破坏

这是我pro::surface班级的(相关)代码:

/** Wraps up SDL_Surface* **/
class surface
{
    SDL_Surface* _surf;
public:
    /** Constructor.
     ** @param surf an SDL_Surface pointer.
     **/
    surface(SDL_Surface*);

    /** Overloaded = operator. **/
    void operator = (SDL_Surface*);

    /** calls SDL_FreeSurface(). **/
    void free();

    /** destructor. Also free()s the internal SDL_Surface. **/
    virtual ~surface();
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,在我的main函数中,对象会free()在真正的渲染开始之前破坏自身(并因此调用危险的SDL视频表面的析构函数!).

int main(int argc, char** argv)
{
    ...
    // declared here
    pro::surface screen = SDL_SetVideoMode(320,240,16,SDL_HWSURFACE|SDL_DOUBLEBUF);

    // event-handling done here, but the Video Surface is already freed! …
Run Code Online (Sandbox Code Playgroud)

c++ oop destructor memory-management

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

将一个局部变量存储在类安全的STL容器中吗?

class MyMap : std::map<char, pro::image>
{
public:
     void MyMethod(char x);
     /** code **/
}

void MyMap::MyMethod(char x)
{
     pro::image my_img; // note that my_img is a local variable
     my_img.LoadFromFile("my_image.png");

     this->insert(std::pair<char, pro::image>(x, my_img)); // stored in the class
}
Run Code Online (Sandbox Code Playgroud)

现在,这段代码安全吗?基本上,做MyMap存储拷贝my_img时候insert,或者它存储的参考

c++ variables containers stl map

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

如何在C++中实现信号和事件?

我正在使用C++在SDL上创建一个Gui库.(不要问我原因,为了理解Gui库是如何制作的,我只是为了从实践中获得一些知识.)而且我想创建一个像gtk +或wxWidgets这样的信号连接系统......

 g_signal_connect(mybutton,"clicked",gtk_main_quit); //Gtk+

 EVT_MENU(wxID_EXIT,OnQuit); //WxWidgets
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用函数指针来做到这一点.但是如何将这些函数添加到主循环中?

或者有更好的方法吗?

c++ signals sdl

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

在c ++中对派生类使用基类指针有任何负面影响吗?

我通常避免使用类指针,因为引用似乎更有效.但我最近被迫使用它们,因为它们提供了唯一(高效且简单)的解决方案,在windows api包装器中使用window id绑定函数.我创建了一个WinControl类的数组.在我的WinHandler类中,它处理WndProc(窗口过程)并将程序中使用的所有小部件添加到该数组中.

class WinControl   //These are not the entire classes, just the significant parts.
{
    public:
        int WinID;
        virtual void Click(void) = 0; //Pure Virtual Function.
}

class WinHandler
{ 
    WinHandler() : WCount(0) { }
    WinControl* WidgetSet[MAX_LENGTH];   // Or I can use an STL vector...
    int WCount;
    void AddWidget(Widget* w) { WCount++; WidgetSet[WCount] = w; }
}         
Run Code Online (Sandbox Code Playgroud)

然后我用:

if (WidgetSet[i]->ID == LOWORD(wParam)) WidgetSet[i]->Click();
Run Code Online (Sandbox Code Playgroud)

从长远来看,这种做法是否正常?由于实际存储在WidgetSet中的对象都是WinControl类的衍生物.有谁能建议更好的方法?

注意:我试图让我的问题尽可能清楚.如果你仍然无法得到我所要求的,请发表评论,我将尝试详细说明这个问题.

c++ oop pointers

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