小编use*_*165的帖子

宏禁止类复制和分配.谷歌-vs- Qt

要禁止复制或分配类,通常的做法是将复制构造函数和赋值运算符设为私有.谷歌和Qt都有宏,使这个变得简单明了.这些宏是:

谷歌:

#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
  TypeName(const TypeName&);   \
  void operator=(const TypeName&) 
Run Code Online (Sandbox Code Playgroud)

Qt的:

#define Q_DISABLE_COPY(Class) \
  Class(const Class &); \     
  Class &operator=(const Class &);
Run Code Online (Sandbox Code Playgroud)

问题:为什么两个赋值运算符的签名不同?好像Qt版本是正确的.两者之间有什么实际区别?

c++

35
推荐指数
4
解决办法
2万
查看次数

字典访问速度与字符串键的整数键比较

我有一本很大的字典,我必须多次查阅这些字典.我的键是整数,但代表标签,所以不需要添加,减去等...我最终试图评估字符串键和整数键字典之间的访问时间,这是结果.

from timeit import Timer

Dint = dict()
Dstr = dict()

for i in range(10000):
    Dint[i] = i
    Dstr[str(i)] = i


print 'string key in Dint',
print(Timer("'7498' in Dint", "from __main__ import Dint").timeit(100000000))
print 'int key in Dint',
print(Timer("7498 in Dint", "from __main__ import Dint").timeit(100000000))
print 'string key in Dstr',
print(Timer("'7498' in Dstr", "from __main__ import Dstr").timeit(100000000))
print 'int key in Dstr',
print(Timer("7498 in Dstr", "from __main__ import Dstr").timeit(100000000))
Run Code Online (Sandbox Code Playgroud)

每次重现的运行之间产生轻微变化:

string key in Dint 4.5552944017
int key in Dint 7.14334390267 …
Run Code Online (Sandbox Code Playgroud)

python dictionary

23
推荐指数
3
解决办法
6218
查看次数

嵌套数据成员指针 - 不可能?

愚蠢的简化代码示例没有做任何有用的事情,而是对数据成员指针的两个后续分配.第一个分配工作,第二个分配给出编译器错误.大概是因为它是一个嵌套的成员.

问题是:是否真的不可能让成员指针指向嵌套成员,或者我错过了任何花哨的语法?

struct Color {
    float Red;
    float Green;
    float Blue; };


struct Material {
    float Brightness;
    Color DiffuseColor; };


int main() {
    float Material::* ParamToAnimate;
    ParamToAnimate = &Material::Brightness;       // Ok
    ParamToAnimate = &Material::DiffuseColor.Red; // Error! *whimper*
    return 0; }
Run Code Online (Sandbox Code Playgroud)

ATM我通过使用字节偏移和大量演员来解决.但这很难看,我最好使用那些成员指针.

是的,我知道之前肯定会出现这个问题(几乎与任何问题一样).是的,我事先搜查过但发现没有令人满意的答案.

谢谢你的时间.

c++ member-pointers

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

链接使用不同版本的GCC构建的目标文件

我对使用现代版本的GCC 4.4.x/4.5.x构建C++库有一些兼容性问题,其中旧版本的客户端,例如3.4.x/4.1.x. 已经提出的一个解决方案是编译目标文件并分发它们.然后,客户可以使用任何版本的GCC和相关的ABI进行链接.一些问题:

  1. 它是否正确?
  2. 我应该静态链接以避免libstdc ++兼容性问题吗?
  3. 这是不必要的(我听说gcc 3.4以后是向前兼容的)?

干杯,格雷姆

c++ compiler-construction gcc

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

Django - DateTimeField收到了一个天真的日期时间

基本上我有以下型号:

class Event(models.Model):
    start = models.DateTimeField(default=0)
Run Code Online (Sandbox Code Playgroud)

当我尝试使用datetime.datetime.strptime创建一个对象时,我得到了

Event.objects.create(start=datetime.datetime.strptime("02/03/2014 12:00 UTC",
                                                      "%d/%m/%Y %H:%M %Z"))

/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py:903: 
RuntimeWarning: DateTimeField Event.start received a naive datetime (2014-03-02 
12:00:00) while time zone support is active.
Run Code Online (Sandbox Code Playgroud)

我已经经历了许多与此相似的帖子,但我无法弄清楚为什么它会给出错误,尽管我正在提出这个UTC (%Z)论点.

提前致谢.

python django datetime

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

当使用类型提升的重载时,为什么方法调用是模糊的?

public class aman {
    void m(double a , int b, int c) {
        System.out.println("second");
    }
    void m(float a , int b, double c) {
        System.out.println("first");
    }
    public static void main(String[] args) {
        aman obj = new aman();
        obj.m(23, 12, 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

这里,方法m()已经重载但我不理解为什么调用是不明确的,因为在第一种方法中只需要进行1次转换,而在第二种方法中,需要进行两次转换.所以,绝对应该调用第一种方法.请说明为什么没有发生这种情况或者我错过了一些规则.

java

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

Symfony2懒人服务何时使用?

我有一个关于symfony2懒惰服务的问题.什么时候应该使用懒惰的服务,何时应该避免使用它们?如果我们使用懒惰服务,是否有任何开销?

php dependency-injection lazy-loading proxies symfony

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

显示连续的QImage流的有效方法

我目前正在使用QLabel来执行此操作,但这似乎很慢:

void Widget::sl_updateLiveStreamLabel(spImageHolder_t _imageHolderShPtr) //slot
{
    QImage * imgPtr = _imageHolderShPtr->getImagePtr();
    m_liveStreamLabel.setPixmap( QPixmap::fromImage(*imgPtr).scaled(this->size(), Qt::KeepAspectRatio, Qt::FastTransformation) );
    m_liveStreamLabel.adjustSize();
}
Run Code Online (Sandbox Code Playgroud)

在这里,我为到达的每个新图像生成一个新的QPixmap对象。由于QPixmap操作仅限于GUI线程,因此这也使GUI感觉响应较差。
我已经看到了关于此的一些讨论,其中大多数建议使用QGraphicsView或QGLWidget,但是我无法找到一个快速的示例来说明如何正确使用它们,这正是我所寻找的。
我将不胜感激。

qt

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

MSMQ通过C# - 确认收到的消息?

我正通过c#向私人队列发送消息:

MessageQueue msgQ = new MessageQueue(@".\private$\aaa");
msgQ.Formatter = new XmlMessageFormatter(new[] { typeof (String) });
msgQ.Send(msg);
Run Code Online (Sandbox Code Playgroud)

它确实有效,我确实在队列中看到了这条消息.

但是,有没有办法获得ACK消息是否成功进入队列

NB

BeginPeek并且PeekCompleted是当队列中消息可用或指定的时间间隔到期时引发的事件.它没有帮助我,因为我需要知道我发送的消息是否由msmq获取.BeginPeek如果其他向队列输入消息,也会引发此异常.我想要的最后一件事就是检查通过BeginPeek- 这条消息来自谁.

我该怎么做 ?

NB2

或者也许我不必担心,因为msgQ.Send(msg);如果没有插入消息会引发异常......?

c# msmq .net-4.5

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

如何使两个相同的类型成为两个可区分的类型

如何制作非原始类型AB两种可区分的类型,以便为函数接口添加类型安全f

constexpr std::size_t type_size{ 8U };
using A = std::array<char, type_size>;
using B = std::array<char, type_size>;

constexpr auto f(A const a, B const b)
{
   // Not shown logic here.
}
Run Code Online (Sandbox Code Playgroud)

c++ type-safety c++20

5
推荐指数
0
解决办法
98
查看次数