小编Adr*_*.S.的帖子

源文件中的私有命名空间

我对私人方法和功能有疑问.假设我有一些不必在类中的实用方法.但是那些相同的方法需要调用我不想向用户公开的其他方法.例如:

Suspect.h

namespace Suspect {
  /**
  *  \brief This should do this and that and more funny things.
  */
  void VerbalKint(void);  // This is for you to use
}
Run Code Online (Sandbox Code Playgroud)

Suspect.cpp

namespace Suspect {
  namespace Surprise {
    /**
    * \brief The user doesn't need to be aware of this, as long 
    *        the public available VerbalKint does what it should do.
    */
    void KeyserSoze(void) {
      // Whatever
    }
  } // end Surprise

  void VerbalKint(void) {
    Surprise::KeyserSoze();
  }
}
Run Code Online (Sandbox Code Playgroud)

所以,这种布局是有效的.包含时Suspect.h,只有 …

c++ namespaces

14
推荐指数
3
解决办法
4394
查看次数

如何在Linux上从源代码安装TBB并使其正常工作

我想知道如何从源代码安装TBB并使其在Linux系统上运行.我在使用它时遇到了一些问题,如果我通过软件包管理器安装TBB,则不会出现问题.

在TBB网页中,有一些关于如何执行此操作的指南,例如设置LD_LIBRARY_PATH和CPATH变量,或者获取tbbvars.sh文件.即使我这样做,当我尝试编译一个例子时,g ++找不到tbb.

所以问题是如果它是如何设置所有东西(编译源代码,我应该设置哪些变量......)的简单方法,以便使用TBB.

谢谢.

注意:询问此问题时的库版本号是2(如果我没记错的话).我亲自测试了4.1版本的解决方案,但我认为它对当前版本也应该有效,4.2 (update 3)因为构建方法保持不变.

c++ linux tbb

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

向观众添加两个不同的点云(点云库(PCL))

我刚刚开始使用伟大的点云库,并希望在一个观察者中显示两个点云,但每个点都有不同的颜色.

当我使用一个点云对象(指针?!)时,它工作正常,但如果我想添加第二个,只有第二个将显示在查看器中.

我正在使用pcl 1.6版,并且在本教程中非常类似.
也许你们有一个建议.

相关的代码段如下.提前致谢!!!

  boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer_two_clouds (new pcl::visualization::PCLVisualizer("3D Viewer"));
  viewer_two_clouds->setBackgroundColor(0,0,0);

     // cloud: green / cloud2: red
  pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZRGB> single_color1 (cloud, 0, 255, 0);
  pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZRGB> single_color2 (cloud2, 255, 0, 0);

  //add both
  viewer_two_clouds->addPointCloud<pcl::PointXYZRGB> (cloud, single_color1, "sample_cloud_1");
  viewer_two_clouds->addPointCloud<pcl::PointXYZRGB> (cloud2, single_color2, "sample_cloud_2");

  // set coordinateSystem and init camera
  viewer_two_clouds->addCoordinateSystem(1.0);
  viewer_two_clouds->initCameraParameters();

  while(!viewer_two_clouds->wasStopped())
  {
      viewer_two_clouds->spinOnce();
      boost::this_thread::sleep (boost::posix_time::microseconds(100000));
  }

  viewer_two_clouds->close();
Run Code Online (Sandbox Code Playgroud)

c++ point-clouds point-cloud-library

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

`QObject`子类和复制构造函数出错:`QObject :: QObject(const QObject&)是private`

我有以下编译错误:

/usr/lib/qt-3.3/include/qobject.h: In copy constructor Product::Product(const Product&):
/usr/lib/qt-3.3/include/qobject.h:211: error: QObject::QObject(const QObject&) is private
Product.h:20: error: within this context
HandleTCPClient.cpp: In member function int Handler::HandleTCPClient(int, std::string, std::string):
HandleTCPClient.cpp:574: note: synthesized method Product::Product(const Product&) first required here 
HandleTCPClient.cpp:574: error:   initializing argument 1 of std::string productDetails(Product)
/usr/lib/qt-3.3/include/qobject.h: In member function Product& Product::operator=(const Product&):
Product.h:20:   instantiated from void std::vector<_Tp, _Alloc>::_M_insert_aux(__gnu_cxx::__normal_iterator<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp = Product, _Alloc = std::allocator<Product>]
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:610:   instantiated from âvoid std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = …
Run Code Online (Sandbox Code Playgroud)

c++ sockets networking qt

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

全部对最大流量

给定有向加权图,如何在所有顶点对之间找到最大流量(或最小边缘切割).
天真的方法就是调用像Dinic这样的Max Flow算法,其复杂度O((V^2)*E)为每对.
因此对于所有对都是如此O((V^4)*E).

是否有可能降低复杂性,O((V^3)*E)O(V^3)通过一些优化?

graph network-flow max-flow

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

Groovy报告文件在系统中确实存在时不存在

每当我的Jenkins作业的构建完成,我就会使用Editable Email Notification插件(又名Email-ext插件)发送一封包含结果的电子邮件.此外,如果系统中存在某个文件,我正在修改消息的默认内容以通知该文件的存在.

为此,我正在使用Pre-send Script插件的字段.

测试作业配置:

为运行准备一个环境

属性内容

LOG="log.txt"
Run Code Online (Sandbox Code Playgroud)

建立阶段

执行shell

#!/bin/bash

touch ${WORKSPACE}/${LOG}
echo "this is just a log" >> ${WORKSPACE}/${LOG}
Run Code Online (Sandbox Code Playgroud)

后期制作行动

可编辑的电子邮件通知

预发送脚本

File log = new File("${WORKSPACE}/${LOG}");
logger.println(log.text);
Run Code Online (Sandbox Code Playgroud)

执行构建时,Jenkins将在文件中创建${WORKSPACE}并填充它(我能够从Jenkins从站中的终端打印内容).

但是当尝试从Email插件访问它时,java.io.FileNotFoundException会引发异常:

java.io.FileNotFoundException: /home/jenkins/workspace/testJob/log.txt (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:146)
    at groovy.util.CharsetToolkit.<init>(CharsetToolkit.java:69)
    at org.codehaus.groovy.runtime.DefaultGroovyMethods.newReader(DefaultGroovyMethods.java:16958)
    at org.codehaus.groovy.runtime.DefaultGroovyMethods.getText(DefaultGroovyMethods.java:16006)
    at org.codehaus.groovy.runtime.dgm$381.doMethodInvoke(Unknown Source)
    at org.codehaus.groovy.reflection.GeneratedMetaMethod$Proxy.doMethodInvoke(GeneratedMetaMethod.java:70)
    at groovy.lang.MetaClassImpl$GetBeanMethodMetaProperty.getProperty(MetaClassImpl.java:3500)
    at org.codehaus.groovy.runtime.callsite.GetEffectivePojoPropertySite.getProperty(GetEffectivePojoPropertySite.java:61)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:227)
    at Script1.run(Script1.groovy:59)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:580) …
Run Code Online (Sandbox Code Playgroud)

file-io groovy jenkins jenkins-plugins

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

错误转发右值参考

我正在尝试新增的右值参考(在vs2012 express中).

我不明白.给出下面的代码(大部分来自c ++标准,其中解释了std :: forward).

struct A
{
    A(int& i, const float& j):
        m_i(i),
        m_j(j){}

    int& m_i;
    const float& m_j;
};

template<class T, class A1, class A2>
T* factory(A1&& a1, A2&& a2)
{
    return new T(a1, a2);
}

void test()
{

    A* a1 = factory<A>(1, 1.2f);

    //How does this work ?        
    a1->m_i = 2;
}
Run Code Online (Sandbox Code Playgroud)

我不明白m_i绑定到哪里.

我将基本上有一个左值引用到右值引用(&&&),ref refpsing规则变为(&)只是一个简单的左值引用.但是参考什么?

c++ rvalue c++11

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

使用gdb处理信号

我正在为Ubuntu 10.04调试一个C++应用程序,它有时会收到一个SIGKILL信号.我想抓住信号并阻止它杀死执行,只是为了看看我是否可以在那个精确的时刻获得应用程序状态的一些有用信息.

阅读gdb文档我找到了handle命令,所以我尝试将它应用于SIGKILL信号:

(gdb) handle SIGKILL stop nopass
Signal        Stop  Print   Pass to program Description
SIGKILL       Yes   Yes     No              Killed
Run Code Online (Sandbox Code Playgroud)

所以,正如我所理解的那样:

stop
    GDB should stop your program when this signal happens. This implies the print keyword as well. 
print
    GDB should print a message when this signal happens. 
nopass
    GDB should not allow your program to see this signal. 
Run Code Online (Sandbox Code Playgroud)

一旦SIGKILL信号被发出,gdb应该以某种方式捕获它,打印消息,停止执行并且不要让应用程序自杀,对吧?

问题是,这不会发生,应用程序终止.

你知道我怎么能抓住这个信号?

实用信息:

  • 发出信号时运行的代码段在另一个线程中执行 …

c++ multithreading gdb signals ubuntu-10.04

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

post 请求和 QNetworkAccessManager 导致内存泄漏

我正在制作一个程序,该程序使用大量计时器,并且每隔 4 秒对php脚本进行在线发布。我正在编码QtCreator 5.1。我使用的类就像下面的类一样。

下面这个只是填充一个任务列表,但在8到12个小时的过程中,程序占用的内存一直在不断上升,逐渐上升。

使用此类时我做错了什么?我必须能够像现在一样继续在网上发帖,大约每 4 到 8 秒一次。

这是一个简单的类,用于处理我的一个流程:

头文件: tasklistprocess.h

#ifndef TASKLISTPROCESS_H
#define TASKLISTPROCESS_H

#include <QThread>
#include <QtCore>
#include <QNetworkRequest>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QListWidget>
#include <QTabWidget>

#include "globalhelper.h"
#include "securityinfo.h"

class TaskListProcess : public QThread
{
    Q_OBJECT
public:
    explicit TaskListProcess(QListWidget *obj_main, QTabWidget *tabs_main, QString user, QObject *parent = 0);

signals:
    void upTaskStorage(int key,QHash<QString,QString> item);

private:
    GlobalHelper gh;
    Securityinfo sci;
    QNetworkAccessManager *nam;
    QNetworkRequest request;
    QByteArray data;

    // this is the disposable params …
Run Code Online (Sandbox Code Playgroud)

c++ post qt memory-leaks qnetworkaccessmanager

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

在 Ansible 中过滤 JSON 文档

我有一个来自 GitHub 存储库的 JSON 回复,其中包含某个版本(assets文档中的数组)的可能下载列表。

我想获得浏览器的下载URL时,name资产端有x64.AppImage

在 Ansible 中,过滤器是基于jmespath它的终端工具构建的,我可以使用以下表达式查询 url:

assets[?ends_with(name, 'x64.AppImage')].browser_download_url
Run Code Online (Sandbox Code Playgroud)

使用以下 playbook,查询 JSON 文档并将其存储在json_reply变量中。

---
- hosts: local
  tasks:
    - name: Get list of Rambox releases
      uri:
        url: "https://api.github.com/repos/saenzramiro/rambox/releases/latest"
        body_format: json
      register: json_reply

    - name: Filter reply
      debug: URL -> "{{ item }}"
      with_items:
        - "{{ json_reply.json | json_query(json_filter) }}"
      vars:
        - json_filter: assets[?ends_with(name, 'x64.AppImage')].browser_download_url
Run Code Online (Sandbox Code Playgroud)

但是,执行此操作会出现以下错误:

fatal: [localhost]: FAILED! => {
    "msg": "JMESPathError in json_query filter …
Run Code Online (Sandbox Code Playgroud)

json ansible jmespath

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

C和C++中的指针和动态内存

几天前我不得不使用C,当使用指针时,我有点意外.

C中的一个例子:

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

void GetPointer(int* p) {
  p = malloc( sizeof(int) );
  if(p) {
    *p = 7;
     printf("IN GetPointer: %d\n",*p);
  } else {
    printf("MALLOC FAILED IN GetPointer\n");
  }
}

void GetPointer2(int* p) {
  if(p) {
    *p = 8;
     printf("IN GetPointer2: %d\n",*p);
  } else {
    printf("INVALID PTR IN GetPointer2");
  }
}

int* GetPointer3(void) {
  int* p = malloc(sizeof(int));
  if(p) {
    *p = 9;
    printf("IN GetPointer3: %d\n",*p);
  } else {
    printf("MALLOC FAILED IN GetPointer3\n");
  }
  return p;
}

int …
Run Code Online (Sandbox Code Playgroud)

c c++ pointers dynamic-memory-allocation

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