传递shared_ptr的最佳做法是什么?
目前我传递shared_ptr函数参数,如下所示:
void function1( shared_ptr<TYPE>& value );
Run Code Online (Sandbox Code Playgroud) 如何使用"自定义"视频捕获器来创建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)
有什么建议?
我正在尝试构建以下应用程序; 来自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) 我想使用Hibernate将持久对象保存到文件系统,而不需要SQL数据库.
这可能吗?
我试图让我的设备隆隆声,但我的运气很少.我的环境是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)
但是我仍然收到分段错误.
尝试使用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)
并设置以下权限: …
我正在尝试创建一个通用容器类型来提供单个公共接口,以及隐藏我正在使用的内部容器,因为它们可能会发生变化.
基本上我有插件返回项目集合,我不希望插件知道我的代码使用的容器类型.
任何人都能指出我比下面的示例代码更好的方向吗?
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)
谢谢
我试图通过像这样的方法传递一个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());
我试图在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) 这一直让我疯狂.
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)