类似 C++ 的 Moose 与 Perl 的 OOP 用法

标签 c++ perl oop moose

我一直在玩弄 Moose,对它有所了解。我想要一个纯虚函数的例子,就像在 C++ 中,但用 Moose 的说法(特别是在 C++ 中)。我知道,即使 Moose 采用了比普通 Perl 更严格的模型,仍然有不止一种方法可以完成我的要求(通过方法修饰符或 SUPER:: 调用)。这就是为什么我特别要求一个尽可能类似于 C++ 的实现。至于“为什么”?这个限制?主要是出于好奇,但也计划将一些 C++ 代码移植到带有 Moose 的 Perl 中,以一种以 C++ 为中心的人大多数可以认同的方式。

最佳答案

我可以想到这种使用角色而不是子类化的方式:

{
    package AbstractRole;
    use Moose::Role;
    requires 'stuff';  
}

{
    package Real;
    use Moose;
    with 'AbstractRole';
}

这会产生编译错误,因为 Real 没有定义stuff

stuff 方法添加到 Real 现在将使其工作:

{
    package Real;
    use Moose;
    with 'AbstractRole';

    sub stuff { print "Using child function!\n" }
}

关于类似 C++ 的 Moose 与 Perl 的 OOP 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1341903/

相关文章:

c++ - StereoBm Opencv函数报错 "object of an abstract class cannot be defined"

linux - 用于 DNS 的 EC2-Describe-Instances

perl - 如何在 Perl 中重新分配非核心模块?

java - 关于 OOP 的问题

php - call_user_func(array(self, 'method' )) - 我必须给类(class)命名吗?

c++ - 转换为模板

c++ - 在模板函数返回类型上使用 std::enable_if 来利用 SFINAE - 编译错误

c++ - std::string & 作为 gcc 5 中的模板参数和 abi_tag

perl - 如何解析制表符分隔的数据文件并在 Perl 中对提取的数据进行分组?

matlab - 在 MATLAB 中是否有 'self' 来引用自己的结构?