C++制作控制台: binding a function

标签 c++ function console

我目前正在使用 C++ 创建一个控制台。我创建了一个类来帮助将代码中的变量和函数链接到控制台中的变量和函数。

我目前将它设置为如果我在代码中有一个变量,我可以在新类下重新定义它并且它将对控制台可见。代码中的变量仍然表现得和以前一样。

例子:

float var = 1.0;

可以重新定义为

ConsoleVar var("myVariable")<float> = 1.0;

var 是代码中的变量名,myVariable 是您用来在终端中访问它的名称

我的问题是:

如何绑定(bind)一个函数,或者更具体地说,如何检测参数的数量和类型。 我知道我可以模板 ConsoleVar类到 void * type 来存储一个函数,但是有没有办法让我自动检测返回类型、参数数量和参数类型?我计划将其运送到图书馆,以便于使用。如果可能的话,我真的很想知道(如果需要我什至会进行组装)否则我对如何实现它有一些想法。

编辑:所以我认为我有一个解决方案,但我有一个问题......是否可以将可变数量的参数传递给函数。不像可变参数。

例如:我从命令行接收到 3 个参数,现在我执行函数

func(arg[1], arg[2], arg[3])

是否可以发送可变数量的参数?

最佳答案

此模式将完成这项工作。

#include <typeinfo>    

// Function with 0 parameters
template< typename Ret >
void examine_function( Ret (*func)() )
{
    std::cout << typeinfo(Ret).name() << std::endl;
}

// Function with 1 parameters
template< typename Ret, typename Param1 >
void examine_function( Ret (*func)(Param1) )
{
    std::cout << typeinfo(Ret).name() << std::endl;
    std::cout << typeinfo(Param1).name() << std::endl;
}

// Function with 2 parameters
template< typename Ret, typename Param1, typename Param2 >
void examine_function( Ret (*func)(Param1, Param2) )
{
    std::cout << typeinfo(Ret).name() << std::endl;
    std::cout << typeinfo(Param1).name() << std::endl;
    std::cout << typeinfo(Param2).name() << std::endl;
}

关于C++制作控制台: binding a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16221081/

相关文章:

c++ - 在 std::map 中存储任何类型或结构

c++ - IPv4 和 IPv6 之间的混合模式通信

function - Haskell 中的打印功能如何像 python 或 Scala 一样?

ios - 在设备上记录数据并检索日志

c# - 将控制台应用程序窗口置于前面代码解释

C++ 多维数组在幕后是如何工作的

c++ - 将单独的数字转换为一个整数 C++

javascript - 用于多绘图的 jQuery 就绪函数

C-随机数数组函数

将文本从终端复制到内存