小编Ben*_*rst的帖子

我应该通过引用传递shared_ptr吗?

传递shared_ptr的最佳做法是什么?

目前我传递shared_ptr函数参数,如下所示:

void function1( shared_ptr<TYPE>& value );
Run Code Online (Sandbox Code Playgroud)

c++ shared-ptr

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

使用libjingle在Android上创建一个带有"自定义"Capturer的WebRTC VideoTrack

如何使用"自定义"视频捕获器来创建VideoTrack并提供帧?

创建VideoTrack的经典方法是:

1 - 获取VideoCapturer实例

VideoCapturer capturer = VideoCapturer.create(name);
Run Code Online (Sandbox Code Playgroud)

2 - 创建一个VideoSource

VideoSource videoSource = peerconnectionFactory.createVideoSource(capturer, videoConstraints);
Run Code Online (Sandbox Code Playgroud)

3 - 使用视频源创建VideoTrack

VideoTrack videoTrack = peerconnectionFactory.createVideoTrack("Label", videoSource);
Run Code Online (Sandbox Code Playgroud)

4 - 将轨道添加到MediaStream


我想知道是否有办法改变第一步.不使用本机Capturer实例,而是使用Android版本,并使用回调为VideoTrack提供框架:

public void onPreviewFrame(byte[] data, Camera camera) {
   // provide the frames to the VideoTrack
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

android libjingle webrtc

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

clang ++ C++ 0x std :: locale

我正在尝试构建以下应用程序; 来自http://en.cppreference.com/w/cpp/locale/messages.

#include <iostream>
#include <locale>
int main()
{
    std::locale loc("de_DE");    
    auto& facet = std::use_facet<std::messages<char>>(loc);
    auto cat = facet.open("libstdc++", loc, "/usr/share/locale");
    std::cout << "\"please\" in German: "
              << facet.get(cat, 0, 0, "please") << '\n'
              << "\"thank you\" in German: "
              << facet.get(cat, 0, 0, "thank you") << '\n';
    facet.close(cat);
}
Run Code Online (Sandbox Code Playgroud)
main.cpp:134:45: error: too many arguments to function call, expected 2, have 3
    auto cat = facet.open("libstdc++", loc, "/usr/share/locale");
               ~~~~~~~~~~                   ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/v1/locale:3528:5: note: 'open' declared here
    _LIBCPP_ALWAYS_INLINE
    ^
/usr/include/c++/v1/__config:84:32: …
Run Code Online (Sandbox Code Playgroud)

c++ locale clang c++11

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

是否可以将持久对象保存到文件系统

我想使用Hibernate将持久对象保存到文件系统,而不需要SQL数据库.

这可能吗?

java hibernate persistent-storage

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

Qt Haptic对android的反馈

我试图让我的设备隆隆声,但我的运气很少.我的环境是HTC Sensation Android 2.3.3 API 10.使用Necessitas Qt Creater作为我的IDE.

什么都不做:

QFeedbackHapticsEffect::playThemeEffect( QFeedbackHapticsEffect::ThemeBasic );
Run Code Online (Sandbox Code Playgroud)

崩溃我的申请:

QFeedbackHapticsEffect rumble;

rumble.setAttackIntensity(0.0);
rumble.setAttackTime(250);
rumble.setIntensity(1.0);
rumble.setDuration(100);
rumble.setFadeTime(250);
rumble.setFadeIntensity(0.0);

rumble.start();

rumble.stop();
Run Code Online (Sandbox Code Playgroud)

我用以下内容指定了我的.pro文件

CONFIG += mobility
MOBILITY += feedback
Run Code Online (Sandbox Code Playgroud)

我正在使用包含所需标头的QTM_USE_NAMESPACE.

编辑:

我已设置以下权限:

android.permission.INTERNET
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.VIBRATE
Run Code Online (Sandbox Code Playgroud)

但是我仍然收到分段错误.

c++ qt android qt-mobility

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

Android平台上的QWebView HTML5 GeoLocation

尝试使用Necessitas的QWebView端口查看HTML5网页中的GPS坐标.但是它总是响应不支持.

function load( )
{
   if ( navigator.geolocation )
   {
      alert( "Supported." );
   }
   else
   {
      alert( "Not Supported!" );
   }
}
Run Code Online (Sandbox Code Playgroud)

我已经改变了QWebPage以允许权限:

BrowserWebPage::BrowserWebPage( QObject* parent ) : QWebPage( parent )
{
    connect( this,
             SIGNAL( featurePermissionRequested( QWebFrame*, QWebPage::Feature ) ),
             SLOT( permissionRequested( QWebFrame*, QWebPage::Feature ) ) );
}

void BrowserWebPage::permissionRequested( QWebFrame* frame, QWebPage::Feature feature )
{
    if ( feature == Geolocation )
    {
        setFeaturePermission( frame, feature, PermissionGrantedByUser );
    }
    else //denied
    {
        setFeaturePermission( frame, feature, PermissionDeniedByUser );
    }
}
Run Code Online (Sandbox Code Playgroud)

并设置以下权限: …

javascript c++ html5 android qt4

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

C++中的通用容器

我正在尝试创建一个通用容器类型来提供单个公共接口,以及隐藏我正在使用的内部容器,因为它们可能会发生变化.

基本上我有插件返回项目集合,我不希望插件知道我的代码使用的容器类型.

任何人都能指出我比下面的示例代码更好的方向吗?

template<class C, typename I>
class Container
{
 public:
 //...

    void push(const I& item)
    {
        if(typeid(C) == typeid(std::priority_queue<I>))
        {
           std::priority_queue<I>* container = (std::priority_queue<I>*)&_container;
           container->push(item);
        }
        if(typeid(C) == typeid(std::list<I>))
        {
           std::list<I>* container = (std::list<I>*)&_container;
           container->push_back(item);
        }
        else
        {
           //error!
        }
     };

  private:
     C _container;
 //...
}
Run Code Online (Sandbox Code Playgroud)

谢谢

c++ stl generic-collections

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

c ++ 0x std :: function作为方法参数

我试图通过像这样的方法传递一个std :: function:

class dispatch
{
  public:
     deliver( std::function<void ( void )> task );
}
Run Code Online (Sandbox Code Playgroud)

这按预期工作.但是我希望将参数传递给作为任务提供的一些方法,但是不希望为所有不同的函数<...>形式创建重载.

例如,它只是为了创建一个像下面这样的方法

deliver( std::function& task );
Run Code Online (Sandbox Code Playgroud)

并且只是调用

dispatch->deliver( bind( &Object::method, X ) );
Run Code Online (Sandbox Code Playgroud)

要么

dispatch->deliver( bind( &Object::method, X, arg1, arg2 ) );
Run Code Online (Sandbox Code Playgroud)

等等...

感谢大家的投入.看起来我真正的错误是调用dispatch-> deliver,附加参数也是绑定调用.

dispatch->deliver( bind( &Object::method1, X1, bind( &Object::method1, X2 ) );
Run Code Online (Sandbox Code Playgroud)

错误:/ usr/include/c ++/v1/functional:1539:13:错误:没有匹配函数来调用'__mu_expand'返回__mu_expand(__ ti,__ uj,__ indices());

c++ bind function c++11

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

CMake缺少环境变量错误

我试图在Mac OSX上使用cmake我既安装了二进制版本,又安装了源代码.但是,在尝试创建Makefile时,我仍然会收到以下错误.

cpc1-dumb4-2-0-cust166:build bcrowhurst $ cmake.CMake错误:错误要求内部CMake变量未设置,cmake可能无法正确构建.

缺少的变量是:

CMAKE_On_COMPILER_ENV_VAR

CMake错误:错误要求内部CMake变量未设置,cmake可能无法正确构建.

缺少的变量是:

CMAKE_On_COMPILER

CMake Error: Could not find cmake module file:/Users/bcrowhurst/NetBeansProjects/appon/build/CMakeFiles/CMakeOnCompiler.cmake

CMake Error: Could not find cmake module file:CMakeOnInformation.cmake

CMake Error: CMAKE_On_COMPILER not set, after EnableLanguage

-- Boost version: 1.43.0

-- Found the following Boost libraries:

--   system

-- Configuring incomplete, errors occurred!
Run Code Online (Sandbox Code Playgroud)

我的CMakeLists.txt如下:

cmake_minimum_required( VERSION 2.6 )

project( Application On )

find_package( Boost COMPONENTS system REQUIRED )

link_directories( ${Boost_LIBRARY_DIRS} )

if(Boost_FOUND)
    include_directories( ${Boost_INCLUDE_DIRS} )

    add_library( object ../source/object.cpp ../source/object.h )   
    target_link_libraries( object …
Run Code Online (Sandbox Code Playgroud)

cmake

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

无法捕获的自定义异常C++

这一直让我疯狂.

class ExceptionImpl;

/**
* Custom Exception.
*/
class Exception : public virtual std::exception
{
  public:
    Exception( const Exception& original );

    Exception( const std::string& message );

    virtual ~Exception( void ) throw( );

    virtual const char* what( void ) const throw( );

  private:
    const std::unique_ptr< ExceptionImpl > m_pimpl;
};
Run Code Online (Sandbox Code Playgroud)

我从库中抛出此自定义异常,如下所示

throw Exception( "Error message" );
Run Code Online (Sandbox Code Playgroud)

并在主要通道中捕获它

try
{
   regex pattern(R"(a*)");

   Id::set_pattern_validator(pattern);

   assert(false);
}
catch( Exception const& exception )
{
   assert(true);
}
Run Code Online (Sandbox Code Playgroud)

Id::set_pattern_validator是库的Id类中的静态方法和异常的来源.我已经尝试了一切可以捕获异常但它未能被捕获.

catch( Exception )

catch( std::exception )

catch( ... …
Run Code Online (Sandbox Code Playgroud)

c++ macos shared-libraries custom-exceptions

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