相关疑难解决方法(0)

C++函数通过一个带有public成员指针的对象调用函数,而不使用dereference运算符

好吧,我认为标题足够描述(但令人困惑,抱歉).

我正在读这个库:Timer1.

在头文件中有一个指向函数的公共成员指针,如下所示:

class TimerOne
{
  public:
  void (*isrCallback)();
};
Run Code Online (Sandbox Code Playgroud)

存在TimerOne类的实例化对象,称为"Timer1".

Timer1调用该函数如下:

Timer1.isrCallback();
Run Code Online (Sandbox Code Playgroud)

这怎么回事?我熟悉通过使用dereference运算符通过函数指针调用函数.

例如:

(*myFunc)();
Run Code Online (Sandbox Code Playgroud)

所以我希望通过对象的上述调用更像是:

(*Timer1.isrCallback)();
Run Code Online (Sandbox Code Playgroud)

那么,通过函数指针调用函数的可接受选项是什么,作为独立的函数指针对象的成员?

c++ pointers function-pointers function

4
推荐指数
2
解决办法
772
查看次数

谁能帮我解释一下在C++中使用typedef?

我对书中的这段代码很困惑:

typedef int (*healthCalcFunc) (const GameCharacter&)
Run Code Online (Sandbox Code Playgroud)

我明白,这 typedef double* PDouble意味着这个词PDouble可以用来声明一个指针double.

但我无法弄清楚其含义 typedef int (*healthCalcFunc) (const GameCharacter&)

有人能帮我解释一下吗?

提前致谢

:)

c++ typedef

3
推荐指数
2
解决办法
221
查看次数

创建一个接受块作为参数的块

void (^block)();
void (^block1)(int);
Run Code Online (Sandbox Code Playgroud)

第一行声明一个块.

第二行声明一个带整数参数的块.

现在我想要一个接受另一个块作为参数的块:

void (^block2)(<another block>);
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

syntax objective-c objective-c-blocks

3
推荐指数
1
解决办法
102
查看次数

在C ++中声明函数指针的typedef

我了解以前曾问过类似的问题和答案。我已经了解了函数指针的概念及其声明的含义。以下是我的函数指针的示例代码,在这里我分配了函数指针fp_GetBiggerElement以指向该函数GetBiggerElement

    #include <iostream>

    typedef     int     (*fp_GetBiggerElement)      (int, int);
    //           ^                ^                     ^
    //      return type      type name              arguments

    using namespace std;

    int GetBiggerElement(int arg1, int arg2)
    {
        int bigger = arg1 > arg2 ? arg1 : arg2;
        return bigger;
    }

    int main()
    {
        fp_GetBiggerElement funcPtr = GetBiggerElement;

        int valueReturned = funcPtr(10, 20);
        cout << valueReturned << endl;
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

我的理解是,typedef意味着为类型赋予新的定义。通常,该typedef语句需要two-parts(或说两个参数)

  1. 第一部分是需要新别名的类型

  2. 第二部分是新的别名

    typedef     unsigned  int       UnsignedInt; …
    Run Code Online (Sandbox Code Playgroud)

c++ typedef

3
推荐指数
1
解决办法
118
查看次数

Typedef有两组括号?

我在一些代码中遇到了一个typedef,它是这样的:

typedef void (NE_API *NeWindowProcCallback)(void* hWnd, NEuint uMsgId, NEuint wParam, NEuint64 lParam);
Run Code Online (Sandbox Code Playgroud)

但是,我不熟悉这种语法.谁有人解释这个?

另外,如果我跳到NE_API的声明,我发现:

#   define NE_API __stdcall
Run Code Online (Sandbox Code Playgroud)

我认为这可能与答案有关,对此的解释也将非常感激.谢谢.

c++

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

C中的函数是否有“类型名称”?

在C语言中,可以定义一个函数指针,但是指针指向的对象是否有“类型名”?

详细地说,不是void (*fubar)(void)可以有一个类型定义,而是可以将其声明fubarFrob* fubar

c pointers function

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

C 中 struct 和 typedef struct 之间的真正区别是什么?

定义结构体有两种主要方式:

struct triangle_s {
    int a,b,c;
};
Run Code Online (Sandbox Code Playgroud)

typedef struct triangle_s {
    int a,b,c;
} triangle;
Run Code Online (Sandbox Code Playgroud)

已经被问过很多次了,但每个答案都是关于struct在使用typedef变体时不必写这么多次。除了您可以避免重复struct关键字之外,还有真正的区别吗?我听说你永远不应该typedef在 C 中使用这个变体,但没有人说为什么。

c struct

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

void typedef如何在C中工作

我正在使用一个故意混淆的代码,其中包含一个我无法理解的奇怪的typedef.任何人都可以解释以下typedef意味着什么:

typedef void (*p_t)(char* a1, char* a2, int a3);
Run Code Online (Sandbox Code Playgroud)

后来主要使用如下:

int main(void) {
    p_t p = &some_function;
    p("foo", "bar", 42);
}
Run Code Online (Sandbox Code Playgroud)

c typedef

0
推荐指数
1
解决办法
108
查看次数

算术表达式可以作为参数传递给函数以描述其中的逻辑吗?

我正在可视化Mandelbrot集以及其他一些分形,并且有很多重复的代码,但是没有代码重用。

我正在使用的功能之一如下:

/**
 * determines whether a pixel lies in the set
 * @params x, y - x and y coordinates on R/I axes
 * @param c - a complex number
 */
void calculateSet(int x, int y, Complex c) {
    Complex z = c.clone();
    int n = 0;
    for (; n < maxDepth; n++) {
        if (z.dis() > 4) { break; }
        z = z^2 + c;
    }
    // some code using n to color the set
}
Run Code Online (Sandbox Code Playgroud)

这遵循Mandelbrot集:

z_(n+1) …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism expression class c++03

0
推荐指数
1
解决办法
76
查看次数

C++:特殊的typedef

根据我的理解,typedef语法是:

typedef existing_type new_type_name;
Run Code Online (Sandbox Code Playgroud)

但是,在Chrome的v8命名空间中,有许多typedef似乎与其他语法一起使用.例如,

typedef void(*  FunctionCallback )(const FunctionCallbackInfo< Value > &info)
Run Code Online (Sandbox Code Playgroud)

有两点我不明白:
1- FunctionCallbackInfo <Value>是在命名空间中定义的类,而FunctionCallback不是; 应该是先存在的现有类型?
2-没有空格分隔existing_typenew_type_name

读取它的正确方法是什么?

编辑:我正在学习本教程中的所有typedef信息.

c++ typedef v8

-4
推荐指数
1
解决办法
203
查看次数