标签: c++

将ZeroMQ与Boost :: ASIO一起使用

我有一个使用ZeroMQ进行消息传递的C++应用程序.但它还必须为基于AJAX/Comet的Web服务提供SGCI连接.

为此,我需要一个普通的TCP套接字.我可以通过普通的Posix套接字做到这一点,但是要保持跨平台的便携性并让我的生活更轻松(我希望...)我正在考虑使用Boost :: ASIO.

但现在我有ZMQ的冲突想要使用它自己zmq_poll()和ASIO它io_service.run()...

有没有办法让ASIO与0MQ一起工作zmq_poll()

或者是否有其他推荐的方法来实现这样的设置?

注:我可以解决,通过使用多线程 - 但它是将与SCGI交通非常低量运行该程序只有一点点的单核/ CPU中,所以多线程是一种资源的浪费?

c++ sockets boost boost-asio zeromq

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

如何在C++中克隆对象?还是有另一种解决方案吗?

我写了一个Stack and Queue实现(基于Linked List).有一个堆栈(bigStack).例如,我分开bigStack(例如:stackAstackB).我pop()是一个节点bigStack,我push()stackA.以同样的方式,我push()stackB.我想bigStack不要改变.因此我想克隆该bigStack对象.如何在C++中克隆对象?或者我的问题有另一种解决方案吗?

class Stack : public List {
public:
   Stack() {}
   Stack(const Stack& rhs) {}
   Stack& operator=(const Stack& rhs) {};
    ~Stack() {}

    int Top() {
        if (head == NULL) {
            cout << "Error: The stack is empty." << endl;
            return -1;
        } else {
            return head->nosu;
        }
    }

    void Push(int nosu, string adi, string …
Run Code Online (Sandbox Code Playgroud)

c++ queue stack data-structures

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

使用指针和使用静态对象的Singleton实现之间的区别

编辑:对不起,我的问题不明确,为什么书籍/文章更喜欢实施#1而不是实施#2?

使用指针实现Singleton类与使用静态对象的实际优势是什么?为什么大多数书都喜欢这个

class Singleton
{
  private:

    static Singleton *p_inst;
    Singleton();

  public:

    static Singleton * instance()
    {
      if (!p_inst)
      {
        p_inst = new Singleton();
      }

      return p_inst;
    }
};
Run Code Online (Sandbox Code Playgroud)

在此

class Singleton
{
  public:
    static Singleton& Instance()
    {
        static Singleton inst;
        return inst;
    }

  protected:
    Singleton(); // Prevent construction
    Singleton(const Singleton&); // Prevent construction by copying
    Singleton& operator=(const Singleton&); // Prevent assignment
    ~Singleton(); // Prevent unwanted destruction
};
Run Code Online (Sandbox Code Playgroud)

c++ singleton design-patterns

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

如何在编译时检查两种类型是否相同(如果它与Boost强类型定义一起使用,则为奖励积分)

我想知道是否有可能在编译时检查两种类型是否相同.我想出的是(idk如果它有效,因为它感觉hackish和IDK标准好,所以IDK在测试时要寻找什么).

#include <boost/strong_typedef.hpp>
BOOST_STRONG_TYPEDEF(double, cm);
BOOST_STRONG_TYPEDEF(double, inch);
template<typename T, typename U>
static constexpr void __help() 
{
}
template<typename T, typename U>
class AreSameType
{
    public:
    constexpr operator bool()
    {
     return &__help<T,U> == &__help<U,T>;
    };
};
Run Code Online (Sandbox Code Playgroud)

用法:

int main()
{
        static_assert(AreSameType<double,float>()== false, "oh noes1");
        static_assert(AreSameType<double,double>()== true, "oh noes2");
        static_assert(AreSameType<int*,double*>()== false, "oh noes3");
        static_assert(AreSameType<double*,double>()== false, "oh noes4");
        static_assert(AreSameType<const double,double>()== false, "oh noes5");
        static_assert(AreSameType<inch,cm>()== true, "oh expected"); //fires
}
Run Code Online (Sandbox Code Playgroud)

所以

1)有更好的方法吗?
2)这个功能黑客的地址保证按标准工作(我打赌不会:))?

c++ static-assert template-meta-programming constexpr c++11

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

我可以使用基于范围的for循环轻松迭代地图的值吗?

是否可以仅使用foreach迭代std :: map中的所有值?

这是我目前的代码:

std::map<float, MyClass*> foo ;

for (map<float, MyClass*>::iterator i = foo.begin() ; i != foo.end() ; i ++ ) {
    MyClass *j = i->second ;
    j->bar() ;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以做到这一点?

for (MyClass* i : /*magic here?*/) {
    i->bar() ;
}
Run Code Online (Sandbox Code Playgroud)

c++ for-loop map c++11

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

Qt在菜单项单击上显示模态对话框(.ui)

我想创建一个简单的"关于"模式对话框,从帮助 - >关于应用程序菜单调用.我用QT Creator(.ui文件)创建了一个模态对话框窗口.

菜单'关于'插槽应该是什么代码?

现在我有了这段代码,但它显示了一个新的模态对话框(不是基于我的about.ui):

void MainWindow::on_actionAbout_triggered()
{
    about = new QDialog(0,0);
    about->show();
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

c++ qt modal-dialog

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

std :: condition_variable :: wait_for和std :: condition_variable :: wait_until有什么区别?

我正在使用参考文献以下列方式解释了这两个:

  • wait_for "阻塞当前线程,直到条件变量被唤醒或在指定的超时持续时间之后"

  • wait_until "阻止当前线程,直到条件变量被唤醒或达到指定的时间点"

有什么不同?是否会wait_until旋转,以便线程可以在发出信号时完全(或多或少)继续,而wait_for只是将线程添加回调度点?

c++ multithreading condition-variable c++11

24
推荐指数
3
解决办法
6920
查看次数

测试正文中抛出代码为0xc0000005的SEH异常

我正在使用GoogleTest为以下课程编写测试,我收到了上述错误.

class Base
{
    // Other Functions;

    CSig objSig[50];
}
Run Code Online (Sandbox Code Playgroud)

Class CSig如下:

class CSig
{
    //... constructor, destructor(empty) and some functions
    CMod *objMod;
    CDemod *objDemod;
}

CSig :: CSig
{
    bIsInitialised = false;

    for (int i=0; i<MAX_NUM; i++)
    {
        PStrokePrev[i] = 0.0;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我丢弃时CSig objSig[50],测试运行正常.

我该怎么做才能解决这个问题?另外,我需要CSig objSig[50]在Base类中.

c++ tdd googletest visual-c++

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

我是否保证sizeof(type)== sizeof(无符号类型)?

sizeof char,int,long double ...可能因编译器而异.但是,根据C++ 11或C11标准,我是否有任何有符号和无符号基本积分类型的大小相同的保证?

c c++ standards-compliance sizeof language-lawyer

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

为什么我可以用指针赋予struct?

为什么甚至编译?

struct UE{
    UE(bool a = true) {  };
//  UE(){}; // if UE took no initial args and called below, gcc will complain.
};
class VA {
    protected:
            UE ue;
    public:
            VA();
};
VA::VA()
{
    ue = new UE(true); // ???why???
//  ue = new UE(); // will complain
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用gcc(GCC)4.6.2.如何使用指针分配结构?

c++ implicit-conversion

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