小编Gui*_*e07的帖子

boost :: unique_lock vs boost :: lock_guard

我不太清楚这两个锁类之间的区别.据说在boost文档中,boost::unique_lock没有实现自动锁定.

这是否意味着之间的主要区别unique_lock,并lock_guard是用unique_lock我们必须显式调用lock()功能?

c++ boost locking

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

std :: unique_ptr用法

std::unique_ptr<int> p1(new int);
std::unique_ptr<int> p2(new int);
p2=p1;
Run Code Online (Sandbox Code Playgroud)

在这里似乎p1不再是"唯一的",因为p2也指它

这是合法的c ++?unique_ptr有copy_semantics吗?如果不是,并且它只有移动语义,那么在将p1分配给p2后p1是否设置为NULL?

编辑:

好的,所以正确的版本是

 p2=std::move(p1)
Run Code Online (Sandbox Code Playgroud)

据此,在此分配后,p1无效?与auto_ptr的区别在哪里?所有权明确规定所有权转让比隐式更安全,因为我认为auto_ptr是这种情况

c++ unique-ptr c++11

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

默认移动构造函数与默认复制构造函数与默认赋值运算符

为什么C++编译器对自动生成的移动构造函数的限制比对自动生成的复制构造函数或赋值运算符的限制更多?

仅当用户没有定义任何内容时才会生成自动生成的移动构造函数(即:构造函数,复制,赋值,析构函数..)

仅当用户未分别定义复制构造函数或赋值运算符时,才会生成复制构造函数或赋值运算符.

我想知道为什么不同.

c++ c++11

31
推荐指数
3
解决办法
2259
查看次数

C#中C++的C++相当于?

public void Consumer()
{
    foreach(int i in Integers())
    {
        Console.WriteLine(i.ToString());
    }
}

public IEnumerable<int> Integers()
{
    yield return 1;
    yield return 2;
    yield return 4;
    yield return 8;
    yield return 16;
    yield return 16777216;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法用模板技巧(或其他)在c ++中获得相同的语法?

c++

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

堆栈对象Qt信号和参数作为参考

我可以使用以下代码(在连接到myQtSignal的最终插槽中)有一个"悬空参考"吗?

class Test : public QObject
{
    Q_OBJECT

signals:
    void myQtSignal(const FooObject& obj);

public:
    void sendSignal(const FooObject& fooStackObject)
    {
        emit  myQtSignal(fooStackObject);
    }
};

void f()
{
    FooObject fooStackObject;
    Test t;
    t.sendSignal(fooStackObject);
}

int main()
{
    f();
    std::cin.ignore();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

特别是如果在同一个线程中没有执行emit和slot.

c++ qt signals-slots

25
推荐指数
3
解决办法
2万
查看次数

python时间偏移

如何在python中应用当前时间的偏移量?

换句话说,能够获得当前时间减去x小时和/或减去m分钟和/或减去s秒和/或减去ms毫秒

例如

curent time = 18:26:00.000

offset = 01:10:00.000

=>resulting time = 17:16:00.000
Run Code Online (Sandbox Code Playgroud)

python time

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

为什么不是所有Boost库都只有标头?

为什么Boost中的所有库都不是标题?换句话说,是什么使得.lib/.dll的使用是强制性的?

当一个类不能成为模板或具有静态字段时?

c++ boost

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

C#中的std :: async vs async/await

我想知道新的c ++功能std::async是否与两个C#关键字async/await相当,如果不是为什么?

c# c++ asynchronous async-await

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

如何将参数传递给boost :: thread?

thread_ = boost::thread( boost::function< void (void)>( boost::bind( &clientTCP::run , this ) ) );  
Run Code Online (Sandbox Code Playgroud)

是否有可能run有这样的参数:

void clientTCP::run(boost:function<void(std::string)> func);
Run Code Online (Sandbox Code Playgroud)

如果是,我应该如何编写我的boost :: thread调用

谢谢.

c++ boost boost-thread

19
推荐指数
3
解决办法
3万
查看次数

使用模板技巧访问私有成员

从一个博客帖子访问私有成员:更安全的污秽约翰内斯·绍布- litb:

template<typename Tag, typename Tag::type M>
struct Rob { 
  friend typename Tag::type get(Tag) {
    return M;
  }
};

// use
struct A {
  A(int a):a(a) { }
private:
  int a;
};

// tag used to access A::a
struct A_f { 
  typedef int A::*type;
  friend type get(A_f);
};

template struct Rob<A_f, &A::a>;

int main() {
  A a(42);
  std::cout << "proof: " << a.*get(A_f()) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

如何geta对象调用函数,因为它没有在里面定义class A

编辑:

我不明白为什么get必须有Tag作为参数而不是 …

c++ templates

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