小编Ϲοδ*_*διϲ的帖子

如何enable_shared_from_this父和派生

我有简单的基础和派生类,我想要两个shared_from_this().

这个简单的方案:

class foo : public enable_shared_from_this<foo> {
    void foo_do_it()
    {
        cout<<"foo::do_it\n";
    }
public:
    virtual function<void()> get_callback()
    {
        return boost::bind(&foo::foo_do_it,shared_from_this());
    }
    virtual ~foo() {};
};

class bar1 : public foo , public enable_shared_from_this<bar1> {
    using enable_shared_from_this<bar1>::shared_from_this;
    void bar1_do_it()
    {
        cout<<"foo::do_it\n";
    }
public:
    virtual function<void()> get_callback()
    {
        return boost::bind(&bar1::bar1_do_it,shared_from_this());
    }
};
Run Code Online (Sandbox Code Playgroud)

导致tr1::bad_weak_ptr以下代码中的异常:

shared_ptr<foo> ptr(shared_ptr<foo>(new bar1));
function<void()> f=ptr->get_callback();
f();
Run Code Online (Sandbox Code Playgroud)

所以在"谷歌搜索"之后我找到了以下解决方案:

class bar2 : public foo {
    void bar2_do_it()
    {
        cout<<"foo::do_it\n";
    }
    shared_ptr<bar2> shared_from_this()
    {
        return boost::static_pointer_cast<bar2>(foo::shared_from_this());
    }
public: …
Run Code Online (Sandbox Code Playgroud)

c++ boost smart-pointers

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

systemd:设置PATH的"Environment"指令

systemd单元文件中设置PATH变量的正确方法是什么?看了几个例子后,我尝试使用下面的格式,但变量似乎没有扩展.

Environment="PATH=/local/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

我正在使用以下版本的systemd在CoreOS上尝试此操作.

systemd 225
-PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT -GNUTLS -ACL +XZ -LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD -IDN
Run Code Online (Sandbox Code Playgroud)

linux systemd coreos

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

从linux终端重用vim实例

通过在vim中使用远程功能,是否可以根据需要重用vim实例来加载多个文件.

在同一个终端实例中拥有该工具会很好.

我更希望有一个基于选项卡的界面,在vim 7+中可用.场景应该是

  1. 打开终端
  2. vim file1.cpp
  3. 编辑 - 保存 - 按Ctrl + Z进行提示
  4. 打开另一个文件
    • vim file2.cpp
  5. 现在我们在同一个编辑器中打开file1.cpp和file2.cpp

那可能吗?!

linux ide vim terminal editor

11
推荐指数
3
解决办法
1942
查看次数

boost :: program_options - 如何处理INI文件中具有相同名称的多个部分

在如下配置中; 有没有办法处理各个部分.

我正在寻找一种方法来以可靠的方式验证下面的各个"服务器"部分.

[basic]
number_of_servers=3

[server]
ip=10.20.30.40
password=sdfslkhf    

[server]
ip=10.20.30.41
password=sdfslkhf

[server]
ip=10.20.30.42
password=sdfslkhf

[server]
password=sdfslkhf

[server]
ip=10.20.30.42
Run Code Online (Sandbox Code Playgroud)

c++ ini configuration-files boost-program-options

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

查找当前打开的文件句柄数(不是lsof)

在*NIX系统上,有没有办法找出当前运行过程中有多少个打开的文件句柄?

我正在寻找一个在C中使用的API或公式,从正在运行的进程中.

c c++ unix linux setrlimit

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

用于多切换的magento定制支付模块

如何在订购多个订单后启用自定义模块并重定向到第三方网站?

当我设置protected $_canUseForMultishipping = true;客户时,不会重定向支付订单.

php payment magento magento-1.7

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

如何在Linux中检测系统时间的变化?

当时间服务器中的系统时间有更新或由于DST更改时,是否有办法得到通知?我正在执行API /系统调用或等效操作。

我的工作之一是在不使用SQL的情况下,将类似于SQL NOW()的值的生成优化为一个小时的粒度。

c++ linux timezone ntp dst

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

如何确保在完成写入之前不读取文件

当我们知道在Linux上使用inotify尝试监视目录时,我们会在创建文件后立即收到通知(在其他进程完成写入之前)

有没有一种有效的方法可以确保在写入文件之前没有读取文件是否由另一个进程完成?

我们可能会添加延迟读取; 但众所周知,这是有缺陷的.

为了更清楚一点的情景; 这两个进程作为不同的用户运行; 预期的负载大约是每秒创建几百个文件.

c c++ linux inotify

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

在C中线程化本地数据

我最近一直在尝试线程本地存储.我有工作代码,每件事似乎都很好但是当我用valgrind运行我的程序时,看起来有一些问题.

我的问题是,如果我将内存分配给静态线程本地存储将在线程退出时被删除吗?

这是我的代码:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include <pthread.h>


void *test (void *arg) 
{
    static __thread int val = 0;
    static __thread char *string = NULL;

    string = (char *) calloc (100, sizeof (char));

    strcpy (string, "hello");

    val++;

    printf ("val(%p):%d\n", &val, val);
    printf ("string(%p):%s\n", &string, string);

    pthread_exit (NULL);
}


int main (int argc, char *argv[])
{
    int num_threads = 10, i;
    pthread_t tid[num_threads];

    for (i=0;i<num_threads;i++) {
        pthread_create (&tid[i], NULL, &test, NULL);
    }

    for (i=0;i<num_threads;i++) {
        pthread_join (tid[i], NULL); …
Run Code Online (Sandbox Code Playgroud)

c multithreading valgrind thread-local-storage

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