标签: function-pointers

如何从MATLAB中的字符串输入创建函数指针?

如果我inline在MATLAB中使用该函数,我可以创建一个单独的函数名称,可以根据以前的选择做出不同的响应:

if (someCondition)
  p = inline('a - b','a','b');
else
  p = inline('a + b','a','b');
end

c = p(1,2);
d = p(3,4);
Run Code Online (Sandbox Code Playgroud)

但是我正在创建的内联函数变得非常史诗,所以我想将它们更改为其他类型的函数(即m文件,子函数或嵌套函数).

假设我有m个文件,比如Mercator.m,KavrayskiyVII.m等等(都取值philambda),我想以p与上面相同的方式分配所选择的函数,以便我可以调用它多次(带可变大小的矩阵和使用eval不可能或完全混乱的东西.

我有一个变量,type,那将是所需要的功能(例如该名称中的一个'Mercator','KavrayskiyVII'等等).我想我需要p进入一个指向type变量内部命名函数的指针.我有什么想法可以做到这一点?

string matlab function-pointers function-handle

9
推荐指数
1
解决办法
9891
查看次数

模板,函数指针和C++ 0x

我个人实验之一,了解一些C++ 0x特性:我正在尝试将函数指针传递给模板函数来执行.最终执行应该发生在不同的线程中.但是对于所有不同类型的函数,我无法使模板工作.

#include <functional>

int foo(void) {return 2;}

class bar {
public:
    int operator() (void) {return 4;};
    int something(int a) {return a;};
};

template <class C>
int func(C&& c)
{
    //typedef typename std::result_of< C() >::type result_type;
    typedef typename std::conditional< 
        std::is_pointer< C >::value,
        std::result_of< C() >::type,
        std::conditional<
            std::is_object< C >::value,
            std::result_of< typename C::operator() >::type,
            void>
        >::type result_type;
    result_type result = c();
    return result;
}

int main(int argc, char* argv[])
{
    // call with a function pointer
    func(foo);

    // call with a …
Run Code Online (Sandbox Code Playgroud)

c++ templates function-pointers c++11

9
推荐指数
1
解决办法
1444
查看次数

如何声明一个指向函数的指针,该函数返回一个指向C/C++中int值数组的指针?

它是否正确?

int (*(*ptr)())[];
Run Code Online (Sandbox Code Playgroud)

我知道这是微不足道的,但我正在看一个关于这种结构的旧测试,而这个特殊的组合并没有在测试中,它真的让我发疯; 我只需要确定一下.这些声明是否有明确而可靠的可理解规则?(即:指向......数组的指针......指向......等等的函数)谢谢!

[R

c c++ arrays function-pointers declaration

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

"函数"类型的优点是什么(不是"指向函数的指针")

阅读C++标准,我看到有"函数"类型和"函数指针"类型:

typedef int func(int);     // function
typedef int (*pfunc)(int); // pointer to function
typedef func* pfunc;       // same as above
Run Code Online (Sandbox Code Playgroud)

我从未见过在示例之外使用的函数类型(或者我可能没有认识到它们的用法?).一些例子:

func increase, decrease;            // declares two functions
int increase(int), decrease(int);   // same as above

int increase(int x) {return x + 1;} // cannot use the typedef when defining functions
int decrease(int x) {return x - 1;} // cannot use the typedef when defining functions

struct mystruct
{
    func add, subtract, multiply;   // declares three member functions
    int member;
}; …
Run Code Online (Sandbox Code Playgroud)

c c++ function-pointers

9
推荐指数
1
解决办法
385
查看次数

在python中,当您将内部定义的函数传递给其他函数时,它如何保留变量?

例如,为什么这有效?

def func1(func1var):
    def innerfunc(innerfuncvar):
        if func1var == 1:
             print innerfuncvar
        else:
             print 5
    func2(innerfunc)


def func2(function):
     function(9)
Run Code Online (Sandbox Code Playgroud)

innerfunc被调用时func2,它如何知道func1var?的值?

python function-pointers function

9
推荐指数
2
解决办法
453
查看次数

c ++中的函数指针:错误:必须使用'.*'或' - >*'来调用函数中的指向成员函数

代码段如下.无法理解为什么我收到此错误.

void
SipObj::check_each_field()
{
map <std::string, sip_field_getter>::iterator msg;
string str;
char name[20];
bool res = false;
sscanf(get_payload(), "%s %*s", name);
LOGINFO(lc()) <<  "INVITE:" << name;
str = name;
msg = sip_field_map.find(str);
if (msg != sip_field_map.end()) {
    sip_field_getter sip_field = msg->second;
    res = (this).*sip_field();
}
}

 typedef bool (SipObj::*sip_field_getter)();
 static map <std::string, sip_field_getter> sip_field_map;

sip_field_getter is a place holder for function names
Run Code Online (Sandbox Code Playgroud)

c++ function-pointers

9
推荐指数
3
解决办法
7506
查看次数

如果我们增加函数指针会发生什么

递增整数指针将按整数大小增加地址.如果我们增加一个函数指针会发生什么?

c function-pointers

9
推荐指数
1
解决办法
1566
查看次数

C/C++中的函数式编程?

我一直在阅读这篇文章:http://en.wikipedia.org/wiki/Function_pointer,我有点困惑.由于C/C++支持函数指针,这是否意味着它们通常支持函数式编程?请注意,我实际上并不想使用C或C++进行函数式编程,但我很好奇,因为我从未听说过C或C++支持这样的事情.(我知道C语言中存在许多函数式编程语言的编译器,但这并不是我所说的"支持").

c c++ functional-programming function-pointers

9
推荐指数
2
解决办法
6172
查看次数

如何创建noexcept函数指针?

我想创建一个像这样的函数指针:

void(*function_pointer)()noexcept;
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.似乎函数声明中的异常说明符无效.必须有办法做到这一点.对?

这与一个与此不同的问题有关.在这里,我问如何使用noexcept说明符创建一个函数指针.在"函数typedef中的noexcept说明符"这个问题中没有被问到或回答过.

c++ function-pointers noexcept c++11

9
推荐指数
1
解决办法
323
查看次数

在 C 中创建一个通用的“函数指针”联合是一个坏主意吗?

对于我正在处理的项目,最好有一个通用的“函数指针”类型。但是,在 C 中,要拥有指向函数的指针,您需要在函数指针的类型中指定原型。

例如,如果我有 function void setdata(short data),我不能将它存储在与 function 相同的指针中int getdata(),因为它们的参数和返回值是不同的。

经过一些横向思考,我想出了以下解决方法:

typedef long (* PFL)(); /* pointer to function that returns a long... */
typedef short (* PFI)(); /* pointer to function that returns a short... */
typedef void (* PFV)(); /* pointer to function that returns a void... */
typedef void (* PFVAL)(long); /* pointer to function that returns a void...
                                but has a long argument...*/
typedef void (* PFVAI)(short); /* pointer to function that …
Run Code Online (Sandbox Code Playgroud)

c union pointers typedef function-pointers

9
推荐指数
1
解决办法
186
查看次数