小编waa*_*919的帖子

C++ 11 std :: this_thread - 如何取消sleep_until()?

有没有办法"取消":

std::this_thread::sleep_until(now + std::chrono::milliseconds(200));
Run Code Online (Sandbox Code Playgroud)

让我们假设以下场景:

我将我的线程设置为在200ms内唤醒...但是在10ms之后,我收到一个新请求,我的线程必须在100ms内唤醒...

所以线程应该唤醒:100ms然后是200ms(当然是在当前时间之后).

谢谢 :)

c++ multithreading sleep std c++11

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

Docker - 将文件从不同的工作目录复制到另一个工作目录不起作用

我正在使用:

Docker 18.09.1
Ubuntu 16.04
Run Code Online (Sandbox Code Playgroud)

我想使用Dockerfile.

我的docker命令是:

sudo docker build -t mytest .
sudo docker run mytest
Run Code Online (Sandbox Code Playgroud)

我的Dockerfile是:

FROM ubuntu:16.04

RUN mkdir -p out/
COPY . out/            <---- this works
COPY /usr/bin/yes /opt <---- this doesn't work!!

CMD out/helloworld
Run Code Online (Sandbox Code Playgroud)

我在我的工作文件夹上C++调用helloworld了一个应用程序out/。但是,我想将一个名为"yes"which的文件复制/user/bin/到我的/opt文件夹中。

我已经尝试了COPY命令和CMD命令,但没有成功。

我试图通过在我的UbuntuVM上运行命令来检查文件是否存在:

docker run mytest ls -l /opt
total 0
Run Code Online (Sandbox Code Playgroud)

我的 COPY 尝试:

COPY /usr/bin/yes /opt …
Run Code Online (Sandbox Code Playgroud)

copy docker

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

C++ 11 - 如何使用带有共享指针向量的priority_queue?

我有一个priority queue班级,像这样:

    class Foo
    {
    public:
        //public methods...
    private:
        std::priority_queue<Obj, std::vector<Obj>, object_less> foo_queue;

        //private methods and members...
    }
Run Code Online (Sandbox Code Playgroud)

我一直在使用该emplace()方法在我的内部插入对象priority_queue,如下所示:

void Foo::add( ... ) {
    foo_queue.emplace(var1, var2);
}
Run Code Online (Sandbox Code Playgroud)

这将调用构造函数Obj(var1,var2)并将其插入到priority queue.

但现在,我需要std::vector<Obj>从外面访问.从我的Obj对象.

类似于创建一个Foo object和更改成员的东西,它位于以下对象内priority_queue:

Foo myFoo; // <-- this is where the priority_queue is!

Obj myObj(1); //Creating an object that has some member with value '1'

myFoo.add(myObj); //This will add the object to the …
Run Code Online (Sandbox Code Playgroud)

c++ vector priority-queue shared-ptr c++11

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

带有指向函数的指针的 C++ 向量 push_back

我有一类Foo含有vectorBarS:

class Foo
{
public:
    void create();
    void callback();

    std::vector<Bar> mBars;
}
Run Code Online (Sandbox Code Playgroud)

我的Bar类包含这个构造函数:

class Bar
{
    Bar(const int x, const int y, std::function<void()> &callback);
}
Run Code Online (Sandbox Code Playgroud)

我的Foo班级有一个create()Bars添加到mBars向量的方法:

void Foo::create()
{
    mBars.push_back({ 1224, 26, callback }); //ERROR!
}
Run Code Online (Sandbox Code Playgroud)

如何设置函数指针,使用std::function?并且还没有创建单独的对象并push_back进入向量?就像上面那行,我得到错误的地方:

E0304   no instance of overloaded function "std::vector<_Ty, _Alloc>::push_back [with _Ty=CV::Button, _Alloc=std::allocator<Bar>]" matches the argument list    
Run Code Online (Sandbox Code Playgroud)

c++ function-pointers vector std-function

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

如何使用rapidjson读取json文件并输出到std :: string?

如何读取*.json文件并将输出放在std::string

我有这个样的,但我总能得到nullstd::string.

#include <rapidjson/document.h>
#include <rapidjson/istreamwrapper.h>
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include <rapidjson/ostreamwrapper.h>
#include <fstream>
#include <iostream>

using namespace rapidjson;
using namespace std;

void main()
{
    ifstream ifs("input.json");
    IStreamWrapper isw(ifs);
    Document d;
    d.ParseStream(isw);

    StringBuffer buffer;
    Writer<StringBuffer> writer(buffer);
    d.Accept(writer);

    std::string jsonStr(buffer.GetString());
    if(jsonStr == "null")
        std::cout << "is null..." << std::endl; //<--always here!
    else
    {
        std::cout << jsonStr.c_str() << std::endl;

        d["ip"] = "123456789";

        ofstream ofs("output.json");
        OStreamWrapper osw(ofs);
        Writer<OStreamWrapper> writer2(osw);
        d.Accept(writer2);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的json文件:

{
  "ip" …
Run Code Online (Sandbox Code Playgroud)

c++ rapidjson

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

C++ - 如何从同一个类的静态函数访问一个类的私有成员?

我拥有的:

所以我有一个带有私有成员的类和一个静态函数。该函数必须真的是静态的,我无法改变它。

我想要的是:

我需要从静态函数访问私有成员。有任何想法吗?:)

请检查以下代码:

class Base
{
private:
   int m_member;
public:
   Base() : m_member(0) {};
   ~Base() {};

   static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode); /* This must really be static because it is coming from C */
};

void Base::key_callback(GLFWwindow* window, int key, int scancode, int action, int mode)
{
    m_member = 1; // <---- illegal reference to non-static member 'Base::m_member'
}
Run Code Online (Sandbox Code Playgroud)

c++ static class callback

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

C++ 11 - 如何使用shared_ptr向量将此对象推入priority_queue?

我有base class一个priority_queue这样的:

class base
{
   //...
   std::priority_queue<std::shared_ptr<Obj>, std::vector<std::shared_ptr<Obj>>, obj_less> obj_queue;
   //...
}
Run Code Online (Sandbox Code Playgroud)

在我Obj class,我有一个方法,应该将此对象推入priority_queue:

void Obj::set ()
{
    BaseServer& myObj = BaseFactory::getBase();
    myObj.set(this); //<------ won't compile :(
}
Run Code Online (Sandbox Code Playgroud)

set()会打电话给set()base class:

void base::set(const Obj& o)
{
    obj_queue.push(o);
}
Run Code Online (Sandbox Code Playgroud)

我想使用this,获取指向同样的指针Obj,然后将它推入我的vector内部priority_queue....

但它甚至不会编译,我有点迷失...

我在这里缺少什么想法?

c++ vector priority-queue shared-ptr c++11

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

C++ - 如何在另一个类中使用构造函数private实例化对象

我有一个class Piece我已经放置了默认构造函数private,因为我想在创建对象时只使用特定的构造函数:

class Piece
{
private:
  Piece();
public:
  Piece (int var1, int var2);
  ~Piece();
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个class Gamevector of Pieces:

class Game
{
private:
  std::vector<Piece> m_pieces;
public:
  Game();
  ~Game();
  CreatePieces(); //<-- only here, I will create the Piece objects, not in the constructor
}
Run Code Online (Sandbox Code Playgroud)

现在我想要一个class Foo,其中包含Piece:

class Foo
{
private:
  Piece m_piece;//ERROR!!! cannot access private member declared in class 'Piece'
public:
  Foo();
  ~Foo();
}
Run Code Online (Sandbox Code Playgroud)

我的问题:

现在我需要使用默认的构造函数m_pieceFoo …

c++ object instantiation

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

C++如何创建创建派生类对象的基类,并访问基类的私有成员?

有什么办法可以让我derived class访问 的private成员,base class同时能够derivedbase class内部的方法上创建对象base class

像这样的东西:

class Derived;

class Base
{
public:
    void func()
    {
        // I want to create the derived obj here
        Derived derived;
        derived.func();
    }
public:
    int mBase = 5;
};

class Derived : public Base
{
public:
    void func()
    {
        // I need to have access to the private members of Base inside this method
        mBase = 6; 
    }
};
Run Code Online (Sandbox Code Playgroud)

错误如下:

Error: derived …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance base-class derived-class

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

在int的向量上使用std :: swap

我有一个vectorint ...我只想交换两个值.

    std::vector<int> vec;

    vec.push_back(0);
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    vec.push_back(4);
    vec.push_back(5);
    vec.push_back(6);
    vec.push_back(7);
    vec.push_back(8);

    std::swap(vec.begin(), vec.end());
Run Code Online (Sandbox Code Playgroud)

在调用swap之前,我有我的vec:

[0,1,2,3,4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)

std::swap(...)我希望将vec作为:

[8,1,2,3,4,5,6,7,0]
Run Code Online (Sandbox Code Playgroud)

但它仍然是初始状态.这里有什么问题?

c++ swap vector

-3
推荐指数
1
解决办法
393
查看次数