小编ste*_*225的帖子

禁用X11窗口的大小调整

我试图阻止用户调整(包括最大化)X11应用程序的窗口.任何人都能指出我正确的方向吗?谷歌没有像往常那样乐于助人.谢谢!

注意:我没有使用Qt或任何其他包装器,直接使用X11调用.

x11

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

抑制套接字中的“不允许操作”错误

我有一个小型实用程序,可以处理TCP和UDP套接字。有时,我收到打印到stderr的错误“不允许操作”。我的问题是,我根据套接字函数(有时是errno)的返回码处理错误,并且不打印任何内容。因此,此消息必须来自套接字调用之一。我不确定是哪一个,因为此消息很少出现,因此很难调试,但是我认为它要么来自socket要么sendto

有没有办法禁止打印所有消息?我可以自己处理错误,我不需要代表我不受控制的系统。

注意,这是仅Linux的应用程序。

谢谢您的帮助。

c++ sockets

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

用于搜索和排序的最佳容器

我有一个用于存储日志数据的纯虚拟类.这个类有两个信息:( std::string id唯一)和int64_t time(允许重复)getId()getTime()函数.创建日志条目后,它们将进入容器,在应用程序终止时,日志消息将写入文件.

随着程序的继续,我可能想要更新日志条目,因此我需要搜索id以找到要更新的正确条目.关机时,我希望按time顺序记录结果.

我想存储一个对象std::map,其中id作为重点,对象为方便检索和更新的价值.在关闭时,在写入之前创建一个std::multimapstd::vector进行排序.这是最好的方法吗?或者是否有更好的对象可以支持这两种需求?

c++ stl

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

用c ++创建自己的运算符

我知道有可能重载已经存在于c ++中的运算符来定义所需的行为,但是是否可以创建自己的运算符?

例如,创建一个#返回容器大小的运算符:

template<typename T>
size_t operator#(const T& obj) { return obj.size(); }

vector<int> v(1024);
cout << #v; // prints 1024
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading

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

如何在XSD中指定有序列表

我有一个需要订购的数字列表.目前它们在XML中是这样的:

<value_1>0.2</value_1>
<value_2>0.4</value_2>
<value_3>0.6</value_3>
...
<value_N>1.8</value_N>
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,它可以在XSD中很好地定义,并且数据是以指定的顺序从解析器返回的?

编辑 XSD片段:

<xs:complexType>
    <xs:sequence>
        <xs:element name="value_1" type="xs:decimal"/>
        <xs:element name="value_2" type="xs:decimal"/>
        <xs:element name="value_3" type="xs:decimal"/>
        ...
        <xs:element name="value_N" type="xs:decimal"/>
    </xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)

xml xsd

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

C++仿函数模板

给定以下类,它只是将内部函子映射f到稍后要运行的函数:

class A {
private:
   int (A::*f)(int);
   int foo(int x) { return x; }
   int bar(int x) { return x*2; }
public:
   explicit A(bool foo=true) { f = foo ? &A::foo : &A::bar; }
   int run(int x) { return (this->*f)(x); }
};
Run Code Online (Sandbox Code Playgroud)

现在说我有另一堂课,B:

class B {
public:
   int foo(int) { return x*x; }
};
Run Code Online (Sandbox Code Playgroud)

功能foo:

int foo(int x) { return 0; }
Run Code Online (Sandbox Code Playgroud)

我知道这是不可能有A分配和运行B::foo或者foo作为他们的原型不同:int (A::*)(int)VS int (B::*)(int) …

c++ templates functor

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

多继承设计实现

我有3个班,A,B,和C那里BACA.

这些类旨在保留历史记录,因此A提供了一个虚拟方法,派生类可以创建该方法,以便在存档历史记录时进行通知void archive().

现在突然有一个需要有从信息A,B以及C在一个类中,我不知道最好的方法.

我想到了创建一个新的类D从继承BC,并改变他们的继承virtual public A,避免钻石的问题,并D::archive()简单地调用B::archive()C::archive().

这是一个好方法吗?或者我应该重新设计4个类,以便我不使用多重继承?

c++ multiple-inheritance

0
推荐指数
2
解决办法
115
查看次数

在javascript中,obj.type始终作为HTML5类型的文本报告

尽管我放了type="number"(或任何其他HTML5支持的类型),Firefox报告类型为text.我该怎么做才能解决这个问题?

<input type="number" id="test"/>
<input type="button" onclick="window.alert(document.getElementById('test').type)" value="test"/>
Run Code Online (Sandbox Code Playgroud)

javascript html5

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

c ++:地址将始终评估为真错误

我编写了自己的atexit方法,问题是,传入的所有内容都是1.当我尝试在将地址提供给我的atexit之前打印地址时,编译器生成了以下警告:

void dummy()将始终评估为'true'

void atexit(void(*func)(void))
{
   cerr << func << endl; // prints 1
   // store func for later
}

void dummy()
{
   cout << "dummy()\n";
}

cerr << &dummy << endl; // prints 1, generates warning
atexit(&dummy);
Run Code Online (Sandbox Code Playgroud)

为什么总是试图传递真实而不是地址?注意:如果重要,真正的代码是试图传递类的静态私有成员函数(singleton)的地址.

编辑

我不在乎打印地址是什么,这是一个例子.我想弄清楚的是为什么地址作为布尔值传递给atexit,因此始终为1.

c++ function-pointers

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