一些Linux应用程序,如supertuxkart或regnum online,都有静态二进制文件,下载后只需工作而无需安装任何共享库.在每个发行版.我该如何制作这样的应用程序?
我有个问题.我加载整个文件,然后通过它获取一些信息.但是,在地图格式中,信息可能有0或20"行".我需要知道如何通过std :: string获取.有一个函数(源流,目标字符串,十进制)但我需要(源字符串,目标字符串,十进制).在C++中搜索流是不可能的(只使用很多临时字符串,多次提取和插入,它不清楚,我不想那么乱的方式).所以我想知道如何从std :: string中获取.
Thans
对于我的游戏,我需要在两个坐标系之间进行转换的功能.那么它主要是数学问题,但我需要的是C++代码,以及如何解决我的问题的一些解释.
屏幕坐标:
a)左上角是0,0
b)没有负值
c)右+ = x(x值越多,右边越多是点)
d)底部+ = y
笛卡尔2D坐标:
a)中间点是(0,0)
b)确实存在负值
c)右+ = x
d)bottom - = y(y越小,底部越多)
我需要一种简单的方法从一个系统转换到另一个系统,反之亦然.要做到这一点,(我认为)我需要一些知识,比如放置在笛卡尔坐标系中的(0,0)[屏幕坐标左上角].
然而,对于在将其转换为屏幕坐标之后的笛卡尔坐标中的某些点存在的问题,屏幕坐标中的位置可能是负的,这是无意义的.我不能把屏幕坐标的左上角放在(-inifity,+ infinity)笛卡尔坐标中......
我怎么解决这个问题?我能想到的唯一解决方案是将屏幕(0,0)放在笛卡尔(0,0)中,并且仅使用IV四分之一的笛卡尔系统,但在这种情况下使用笛卡尔系统是没有意义的......
我确信有一些方法可以将屏幕坐标转换为笛卡尔坐标,反之亦然,但我在思考这个负值时做错了什么.
在 wxWindow的:: GetHandle()函数返回HWND在Windows和GtkWidget的Linux操作系统.我需要获得X11 Window Handle,这不是小部件本身.如何从该窗口小部件获取句柄?我需要C++代码,因为它是wxWidgets的主要语言.
因此,linux top命令具有与控制台输出类似的实时循环(没什么特别的),但它使用非阻塞控制台输入,它不在命令行中显示类型字符.怎么做的?有没有它的库,他们使用线程吗?我需要编写一个具有相同风格的linux应用程序(通过ssh使用),我不知道如何做这个输入(cin在单独的线程中不是解决方案,top使用其他东西).
我听说空的析构函数没有做任何事情,调用它不会删除对象.但在代码中:
#include <iostream>
#include <set>
class a
{
public:
~a()
{}
std::set <int> myset;
};
int main()
{
a object;
object.myset.insert(55);
object.~a();
object.myset.insert(20);
std::cout << object.myset.size();
}
Run Code Online (Sandbox Code Playgroud)
我得到:" *glibc检测到* /.app:双重免费或腐败(fasttop):"然后"ABORT".
如果重要的话我启用了c ++ 11标志.那么空构造函数实际上做了什么?它做了一些事情而我没有看过.
最后我找到了非常奇怪的bug,这是由双重调用析构函数引起的.这是重现错误的最小代码:
#include <iostream>
#include <memory>
#include <set>
class cEventSystem {
public:
cEventSystem() {
std::cout << "constructor: " << this << std::endl;
}
~cEventSystem() {
std::cout << "destructor: " << this << std::endl;
}
};
class cSubscriber {
public:
cSubscriber(cEventSystem& eventSystem) : eventSystem(eventSystem) {}
virtual ~cSubscriber() {}
virtual void onEvent() = 0;
protected:
cEventSystem& eventSystem;
};
class cTileBrowser: public cSubscriber {
public:
cTileBrowser(cEventSystem eventSystem) : cSubscriber(eventSystem) {}
void onEvent() {}
};
class cGui: public cSubscriber {
public:
cGui(cEventSystem& eventSystem) : cSubscriber(eventSystem) …Run Code Online (Sandbox Code Playgroud) class a //my base abstract class
{
public:
virtual void foo() = 0;
};
class b : public a //my child class with new member object
{
public:
void foo()
{}
int obj;
};
int main()
{
b bee;
a * ptr = &bee;
ptr->obj; //ERROR: class a has no member named "obj"
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我有一个指向子类("a")指向子类("b")对象的指针时,如何访问"obj"成员?我知道铸造应该成功,但我正在寻找更好的解决方案.
class subscriber
{
public:
virtual void update() = 0;
}
class entity : public subsriber
{
public:
virtual void update() = 0;
}
class myObject : public entity
{
public:
virtual void update()
{
do_things();
}
}
subscriber * ptr = new myObject; //will use shared_ptr, but here i want simplicity
ptr->update();
Run Code Online (Sandbox Code Playgroud)
问题是,是否会调用正确的更新函数(在myObject中实现的函数)?在一个"系列"中有两个具有相同名称的纯虚函数是否有效?
class a //my base class
{
public:
a()
{
foo();
}
virtual void foo() = 0;
};
class b : public a
{
public:
void foo()
{
}
};
int main()
{
b obj; //ERROR: undefined reference to a::foo()
}
Run Code Online (Sandbox Code Playgroud)
为什么它会给我错误?纯虚拟foo已定义.我需要在代码中进行哪些更改才能使其正常工作?我需要在其构造函数中调用基类的纯虚方法.