小编Dav*_*ria的帖子

为什么不能将const对象放入STL容器中?

请参阅下面的代码 - 我试图将const对象放入向量中.我知道答案是"STL容器要求对象可分配并复制施工的",但是,如果没有列举的标准,任何人都可以解释什么用这样的问题呢?我不明白为什么这样的类无法复制(除了c ++不允许).

它只是一个存储的值,不允许更改 - 为什么不能将它放在一个向量中只是创建另一个这些对象?

#include <vector>

// Attempt 1
// /home/doriad/Test/Test.cxx:3:8: error: non-static const member ‘const int MyClass::x’, can’t use default assignment operator

// struct MyClass
// {
//   int const x;
//   MyClass(int x): x(x) {}
// };
// 
// int main()
// {
//   std::vector<MyClass> vec;
//   vec.push_back(MyClass(3));
//   return 0;
// }

// Attempt 2
// /home/doriad/Test/Test.cxx:28:23: error: assignment of read-only member ‘MyClass::x’
struct MyClass
{
  int const x;
  MyClass(int x): x(x) {}
  MyClass& …
Run Code Online (Sandbox Code Playgroud)

c++

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

当我结账主人时,git子模块有"新提交"

我有一个名为Helpers的子模块.当我使用--recursive克隆我的主项目时,Helpers子模块处于一个独立的头部状态(正如所有教程所说的那样).如果我现在在主项目目录中'git status',一切都很干净.如果我是助手; git checkout master',我希望没有什么可以改变的,除了我现在在一个我可以承诺的命名分支上.但是,没有做任何其他事情,如果我'cd ..; git status',我明白了

 modified:   Helpers (new commits)
Run Code Online (Sandbox Code Playgroud)

为什么它认为有新的提交?子模块应该仍然与更新时相同(在这种情况下,克隆),不是吗?

git git-submodules

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

为什么Member Detector后备必须是int?

我以为我得到了这个课程的想法(从这里https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Member_Detector):

template<typename T>
class DetectX
{
    struct Fallback { int X; }; // add member name "X"
    struct Derived : T, Fallback { };

    template<typename U, U> struct Check;

    typedef char ArrayOfOne[1];  // typedef for an array of size one.
    typedef char ArrayOfTwo[2];  // typedef for an array of size two.

    template<typename U> 
    static ArrayOfOne & func(Check<int Fallback::*, &U::X> *);

    template<typename U> 
    static ArrayOfTwo & func(...);

  public:
    typedef DetectX type;
    enum { value = sizeof(func<Derived>(0)) == 2 }; …
Run Code Online (Sandbox Code Playgroud)

c++ sfinae

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

将静态变量初始值的doxygen复制到\ file块

我试图将静态变量的初始值的doxygen复制到\ file块中我的代码的顶部.也就是说,在这样的事情:

#include <iostream>

/*! \file Test.cxx
 * This is my program.
 * \copydetails HelpText
 */

/*! \var
 * This is my static string.
 */
static std::string HelpText = "Calculate the average magnitude of the vectors in a vector image.\n\n\
    Usage:\n\
    -in InputVectorImageFileName\n";

int main()
{

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

我希望"用法"字符串出现在主文件文档中.正如你所看到我试过\ copydoc但它似乎只是复制静态变量上方的注释,而不是初始值.请注意,初始值在变量的文档中正确显示.

有什么建议?

谢谢.

variables doxygen

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

命名空间搜索顺序

我有两个名称空间,每个名称空间都有一个具有相同名称的函数.如果从其中一个命名空间我想调用匹配最佳的函数.从NamespaceA中的函数,如果我调用MyFunction(...),当然它使用NamespaceA中的函数.但是,如果我添加一个'using NamespaceB :: MyFunction',我会期待我描述的行为.但是,我实际看到的是它总是找到NamespaceB函数,即使我在NamespaceA中.但是,如果我还添加了一个using :: NamespaceA(尽管我已经在NamespaceA中),它可以像我期望的那样工作.下面是一个演示.谁能解释一下这是如何工作的?

#include <iostream>

namespace NamespaceA
{
  void DoSomething();
  void MyFunction(int object);
}

namespace NamespaceB
{
  void MyFunction(float object);
}

namespace NamespaceA
{
  void DoSomething()
  {
    using NamespaceA::MyFunction; // Note that without this line the lookup always fins the NamespaceB::MyFunction!
    using NamespaceB::MyFunction;

    MyFunction(1);
    MyFunction(2.0f);
  }

  void MyFunction(int object)
  {
    std::cout << "int: " << object << std::endl;
  }
}

namespace NamespaceB
{
  void MyFunction(float object)
  {
    std::cout << "float: " << object << std::endl;
  }
} …
Run Code Online (Sandbox Code Playgroud)

c++

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

获取具有指定前缀的变量列表

有没有办法获得具有指定前缀的用户定义变量列表?例如:

set(vars_MyVar1 something)
set(vars_MyVar2 something)
getListOfVarsStartingWith(vars_)
Run Code Online (Sandbox Code Playgroud)

cmake

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

从集中删除文件

我有一个目录,其中的文件属于构成Qt项目的集合,而其他文件则不属于.也就是说,文件A.cxx,ADriver.cxx和A.ui都属于需要使用Qt选项编译的集合.然后我有一个非qt的文件B.cxx.然后C.cxx,CDriver和C.ui是另一个Qt集.有几十个,所以我想使用globs而不是手动编写每个add_executable.我在考虑做类似的事情

for(all ui files) 
  create an executable from the ui and its matching .cxx and *Driver.cxx"
end
Run Code Online (Sandbox Code Playgroud)

然后所有"保留"(未在上面的循环中使用)的cxx文件都是非Qt,需要自己编译.我的问题是如何从"集合"中"减去"文件.也就是说,要使用上述方法,我必须拥有一组所有cxx文件,并删除在.ui文件循环中使用的文件.这可能吗?有没有更好的方法来做这样的事情?

cmake

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

如果要检查recv_ready(),是否必须检查exit_status_ready?

我正在运行一个远程命令:

ssh = paramiko.SSHClient()
ssh.connect(host)
stdin, stdout, stderr = ssh.exec_command(cmd)
Run Code Online (Sandbox Code Playgroud)

现在我想得到输出.我见过这样的事情:

# Wait for the command to finish
while not stdout.channel.exit_status_ready():
    if stdout.channel.recv_ready():
        stdoutLines = stdout.readlines()
Run Code Online (Sandbox Code Playgroud)

但这似乎有时从不运行readlines()(即使应该有关于stdout的数据).这似乎对我意味着stdout.channel.exit_recat_ready()一旦stdout.channel.exit_status_ready()为True,stdout.channel.recv_ready()就不一定准备就绪(True).

这样的事情合适吗?

# Wait until the data is available
while not stdout.channel.recv_ready():
    pass

stdoutLines = stdout.readlines()
Run Code Online (Sandbox Code Playgroud)

也就是说,在等待recv_ready()数据准备就绪之前,我是否真的必须首先检查退出状态?

如果stdout.channel.recv_ready()在无限循环中等待成为True(如果不应该是任何stdout输出则不会),我怎么知道是否应该在stdout上有数据?

python paramiko

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

使用cvtColor转换单个颜色

我有一种颜色,我想转换为不同的颜色空间.是否有可能使用cvtColor一上cv::Vec3f直接而无需创建一个1x1 cv::Mat和与像素填充它,使用cvtColorcv::Mat,然后让唯一的像素进行输出?我尝试了以下,但它似乎不喜欢传递一个向量.

有什么建议?

#include <iostream>

#include <opencv2/opencv.hpp>

int main(int, char*[])
{
    cv::Vec3f hsv;
    hsv[0] = .9;
    hsv[1] = .8;
    hsv[2] = .7;

    std::cout << "HSV: " << hsv << std::endl;

    cv::Vec3b bgr;
    cvtColor(hsv, bgr, CV_HSV2BGR); // OpenCV Error: Assertion failed (scn == 3 && (dcn == 3 || dcn == 4) && (depth == CV_8U || depth == CV_32F)) in cvtColor

    std::cout << "BGR: " << bgr << std::endl; 

    return EXIT_SUCCESS; …
Run Code Online (Sandbox Code Playgroud)

c++ opencv opencv3.0

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

Jenkins在构建中跟踪自定义值

我有一个测试,可以在每次构建结束时为算法生成精度值.我可以将这些值"发布"为每个构建的表,这很好,但是我想看看这些值如何从构建变为构建类似"仪表板"视图,其中说来自最后N个作业的值比较为表格单元格中的列,上升的值为绿色,而已下降的值为红色等.

有没有办法(插件等)来完成这样的事情?

jenkins jenkins-plugins

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