c++ - 使用 SWIG 在 Lua 中实现和继承 C++ 类

标签 c++ lua swig

是否可以使用 LuaSWIG并说一个 IInterface 类,以实现该接口(interface)并在 Lua 中实例化它?如果可以,如何实现?

最佳答案

首先,C++ 风格的接口(interface)现在在像 Lua 这样的语言中确实很有意义。对于符合接口(interface)的 Lua 对象,它只需要包含该接口(interface)中所有函数的定义。不需要任何特定的继承。例如,如果您有一个像这样的 C++ 接口(interface):

// Represents a generic bank account
class Account {
    virtual void deposit(double amount) = 0;
};

您可以在 Lua 中实现它而无需任何特定的继承规范:

SavingsAccount = { balance = 0 }
SavingsAccount.deposit = function(amount)
    SavingsAccount.balance = SavingsAccount.balance + amount
end

-- Usage
a = SavingsAccount
a.balance = 100
a.deposit(1000)   

简而言之,您不需要 C++ 接口(interface)。如果您需要从 Lua 扩展 C++ 类的功能,您应该将其包装到 Lua 对象中,如所述here并按照说明进行“元表”继承 here .另请阅读 section on Object Oriented Programming在 Lua 手册中。

关于c++ - 使用 SWIG 在 Lua 中实现和继承 C++ 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1782337/

相关文章:

c++ - DLL 中的非阻塞套接字(无窗口)

scope - 从表中导入函数作为 Lua 中的局部函数

lua - MetaLua 可以和 LuaJIT 一起使用吗?

Lua小数精度损失

python - 通过 SWIG 将简单的 numpy 数组传递给 C

c++ - 如何捕获从类的全局实例的构造函数抛出的异常?

c++ - boost 文件系统 : recursive_directory_iterator constructor causes SIGTRAPS and debug problems

c++ - 当 x_0 = 1 时尝试计算 e^x

python - 将 CMake 用于 Python 中的 C++ 扩展,使用 SWIG 并依赖于预先存在的库

python - 如何提供 SWIG 的包含路径?