小编Fil*_*pok的帖子

多继承和可变参数模板

考虑以下代码:

#include <string>
#include <iostream>

class Foo
{
protected:
    void foo(){ std::cout << "foo" << std::endl; }
};

class Bar
{
protected:
    void bar(){ std::cout << "bar" << std::endl; }
};

template<typename... Args>
class Test: public Args...
{
public:
    void test()
    {
            this->foo();
            this->bar();
    }
};

int main(int argc, char** argv)
{
    Test<Foo, Bar> test;
    test.test();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我们可以看到编译器允许我们从参数包继承.但是,当我们需要这个功能时?如何正确使用?

更新

我想看看Nawaz提供的一些用例.我看到的唯一用例 - 基于策略的设计,但如果我们强制执行所需的策略列表,那就不会更好:

template<typename T, typename Policy1, typename Policy2, typename Policy3>
class SomeClass: public Policy1, public Policy2, …
Run Code Online (Sandbox Code Playgroud)

c++ variadic-templates c++11

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

VLC 录制 rtsp 流

我在使用 VLC 播放器录制 rtsp 流时遇到问题。实际上我的方法适用于 MacOS X,但不适用于 Windows。命令行:

vlc -vvv rtsp://admin:admin@192.168.0.151/live/h264/ --sout="#transcode{vcodec=mp4v,vfilter=canvas{width=800,height=600}}:std{access=file,mux=mp4,dst=C:\123.mp4}"
Run Code Online (Sandbox Code Playgroud)

在 MacOS 上它工作正常,但在 Windows 下它会创建不可读的文件。媒体信息输出:

General
Complete name                            : C:\123.mp4
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : isom
File size                                : 1.08 MiB
Run Code Online (Sandbox Code Playgroud)

有什么建议?

transcode record vlc stream rtsp

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

标签 统计

c++ ×1

c++11 ×1

record ×1

rtsp ×1

stream ×1

transcode ×1

variadic-templates ×1

vlc ×1