请看下面的例子:
class Base
{
protected:
int m_nValue;
public:
Base(int nValue)
: m_nValue(nValue)
{
}
const char* GetName() { return "Base"; }
int GetValue() { return m_nValue; }
};
class Derived: public Base
{
public:
Derived(int nValue)
: Base(nValue)
{
}
Derived( const Base &d ){
std::cout << "copy constructor\n";
}
const char* GetName() { return "Derived"; }
int GetValueDoubled() { return m_nValue * 2; }
};
Run Code Online (Sandbox Code Playgroud)
这段代码不断给我一个错误,即基类没有默认的构造函数.当我宣布一切都好的时候.但是当我不这样做时,代码不起作用.
如何在派生类中声明复制构造函数而不在基类中声明默认的构造函数?
Thnaks.
我正在为ubuntu 12.10 i386开发vddk库.我不断得到以下错误:
Cannot open library: libexpat.so.0: cannot open shared object file: No such file or directory.
Run Code Online (Sandbox Code Playgroud)
我跑的apt-file search libexpat.so
时候会告诉我以下情况
lib64expat1: /usr/lib64/libexpat.so.1
lib64expat1: /usr/lib64/libexpat.so.1.6.0
lib64expat1-dev: /usr/lib64/libexpat.so
libexpat1: /lib/i386-linux-gnu/libexpat.so.1
libexpat1: /lib/i386-linux-gnu/libexpat.so.1.6.0
libexpat1-dev: /usr/lib/i386-linux-gnu/libexpat.so
Run Code Online (Sandbox Code Playgroud)
我已经尝试创建一个符号链接
sudo ln -s /usr/lib/i386-linux-gnu/libexpat.so /usr/lib/i386-linux-gnu/libexpat.so.0
Run Code Online (Sandbox Code Playgroud)
但它不起作用.奇怪的事情:
ls -l `locate libexpat.so`
ls: cannot access /lib/i386-linux-gnu/libexpat.so.1: No such file or directory
ls: cannot access /lib/i386-linux-gnu/libexpat.so.1.6.0: No such file or directory
ls: cannot access /usr/lib/vmware-vix-disklib/lib64/libexpat.so.0: No such file or directory
-rw-r--r-- 1 ubuntu ubuntu 141320 Aug 20 09:21 …Run Code Online (Sandbox Code Playgroud) 我有一个A级,通过startActivityForResult传递Intent它来运行活动.在其他类中,让我们说BI得到它Intent并通过它重新创建活动.如何监听该活动的事件,例如为结果启动的活动正在运行,用户按下"后退"按钮,所以我想做一些动作.我怎样才能做到这一点?提前谢谢你.
我重新创建对象实例的活动不是从Activity类派生的.这只是ACTIVITY.所以我只有对象.有没有办法用类的实例而不是类来做这些东西?
我只是好奇,在嵌入式系统上进行单元测试的Lua框架是什么.我听说过Lunit和Lua Unit,但这些库在嵌入式系统上运行良好吗?
如何在lua中编写Unicode符号.例如,
当我写作时,我必须用9658写符号
string.char( 9658 );
Run Code Online (Sandbox Code Playgroud)
我收到了一个错误.那么如何编写这样的符号呢?
我有以下makefile:
main.o: ServerSocket/main.cpp ../Shared/socket.h
g++ -c ServerSocket/main.cpp -lstdc++
DriveInfo.o: ServerSocket/DriveInfo.cpp ServerSocket/DriveInfo.h ServerSocket/Consts.h
g++ -c ServerSocket/DriveInfo.cpp -lstdc++
ProcessInfo.o: ServerSocket/ProcessInfo.cpp ServerSocket/ProcessInfo.h ServerSocket/Consts.h
g++ -c ServerSocket/ProcessInfo.cpp -lstdc++
thread_pool.o: ServerSocket/thread_pool.cpp ServerSocket/thread_pool.h
DriveInfo.o ProcessInfo.o thread_pool.o
server: main.o
g++ -o server main.o
DriveInfo.o ProcessInfo.o thread_pool.o
Run Code Online (Sandbox Code Playgroud)
问题只是该文件的一个命令正在执行,所以如果我想执行下一个<我必须删除或注释上一个命令.这个makefile有什么问题?
我正在一个线程池,并避免长限定符名称,我想使用typedef声明.
但它并不像看起来那么容易:
typedef unsigned ( __stdcall *start_address )( void * ) task;
Run Code Online (Sandbox Code Playgroud)
当我以这种方式尝试时,我得到了:
error C3646: 'task' : unknown override specifier
Run Code Online (Sandbox Code Playgroud)
错误,在用这个声明玩了一会儿之后我就卡住了,找不到任何合理的解决方案来用来声明这种类型的typedef.
我开发了一个处理实时视频流的应用程序.问题是它应该作为服务运行,并且随着时间的推移我注意到一些内存增加.当我用valgrind检查应用程序时 - 它没有找到任何与泄漏相关的问题.所以我用google个人资料工具查看了它.这是一个结果(在大约6小时运行后减去最新的第一个转储之一):
30.0 35.7% 35.7% 30.0 35.7% av_malloc
28.9 34.4% 70.2% 28.9 34.4% av_reallocp
24.5 29.2% 99.4% 24.5 29.2% x264_malloc
Run Code Online (Sandbox Code Playgroud)
当我检查图表上的内存时,我看到这些分配与avcodec_open2有关.客户端代码是:
` g_EncoderMutex.lock();
ffmpeg_encoder_start(OutFileName.c_str(), AV_CODEC_ID_H264, m_FPS, width, height);
for (pts = 0; pts < VideoImages.size(); pts++) {
m_frame->pts = pts;
ffmpeg_encoder_encode_frame(VideoImages[pts].RGBimage[0]);
}
ffmpeg_encoder_finish();
g_EncoderMutex.unlock()
Run Code Online (Sandbox Code Playgroud)
ffmpeg_encoder_start方法是:
void VideoEncoder::ffmpeg_encoder_start(const char *filename, int codec_id, int fps, int width, int height)
{
int ret;
m_FPS=fps;
AVOutputFormat * fmt = av_guess_format(filename, NULL, NULL);
m_oc = NULL;
avformat_alloc_output_context2(&m_oc, NULL, NULL, filename);
m_stream = avformat_new_stream(m_oc, 0); …Run Code Online (Sandbox Code Playgroud) 我一直在尝试不同的c ++库,并发现以下内容:简单的应用程序:
#include <iostream>
int main(int argc, char* argv[])
{
try
{
throw 1;
}
catch(...)
{
std::cout << "Exception is caught\n";
}
}
Run Code Online (Sandbox Code Playgroud)
当我在ARM上编译它时:
clang++ -stdlib=stdlibc++
Run Code Online (Sandbox Code Playgroud)
异常按预期捕获.
但当我把它改为:
clang++ -stdlib=libc++
Run Code Online (Sandbox Code Playgroud)
我经常得到:
terminating with uncaught exception of type int
Aborted
Run Code Online (Sandbox Code Playgroud)
我试图用各种标志明确打开异常,如:
-fexceptions
-fcxx-exceptions
-frtti
Run Code Online (Sandbox Code Playgroud)
但这些标志都不起作用.未被捕获的例外是什么原因?可能是因为错误安装的libc ++?
PS在PC上,使用libc ++编译的相同程序按预期工作.libc ++版本在两个平台上都是相同的 - 3.7.0-1ubuntu0.1
我已经构建了 libc++ 并且想在编译我的程序时使用它?所以我有类似的东西
clang++ -stdlib=~/libc++/libc++.so main.cpp
Run Code Online (Sandbox Code Playgroud)
但这不起作用。构建应用程序时如何使用我自定义构建的 libc++?