有没有办法"取消":
std::this_thread::sleep_until(now + std::chrono::milliseconds(200));
Run Code Online (Sandbox Code Playgroud)
让我们假设以下场景:
我将我的线程设置为在200ms内唤醒...但是在10ms之后,我收到一个新请求,我的线程必须在100ms内唤醒...
所以线程应该唤醒:100ms然后是200ms(当然是在当前时间之后).
谢谢 :)
我正在使用:
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) 我有一个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) 我有一类Foo含有vector的BarS:
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) 如何读取*.json文件并将输出放在std::string?
我有这个样的,但我总能得到null上std::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) 我拥有的:
所以我有一个带有私有成员的类和一个静态函数。该函数必须真的是静态的,我无法改变它。
我想要的是:
我需要从静态函数访问私有成员。有任何想法吗?:)
请检查以下代码:
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) 我有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....
但它甚至不会编译,我有点迷失...
我在这里缺少什么想法?
我有一个class Piece我已经放置了默认构造函数private,因为我想在创建对象时只使用特定的构造函数:
class Piece
{
private:
Piece();
public:
Piece (int var1, int var2);
~Piece();
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个class Game有vector 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_piece上Foo …
有什么办法可以让我derived class访问 的private成员,base class同时能够derived在base 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) 我有一个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++ ×9
vector ×4
c++11 ×3
shared-ptr ×2
base-class ×1
callback ×1
class ×1
copy ×1
docker ×1
inheritance ×1
object ×1
rapidjson ×1
sleep ×1
static ×1
std ×1
std-function ×1
swap ×1