小编fun*_*man的帖子

如何从另一个方法调用指向方法的指针

我前段时间遇到过这个问题而且我放弃了,但最近又回来了.

#include <iostream>

class element2D;

class node2D
{
public:
    void (element2D::*FunctionPtr)();
    void otherMethod()
    { std::cout << "hello" << std::endl;
        ((this)->*(this->FunctionPtr))(); //ERROR<-------------------
    }

};

class element2D
{
public:
    node2D myNode;
    void doSomething(){ std::cout << "do something" << std::endl; }
};

int main()
{
    element2D myElement;

    myElement.myNode.FunctionPtr = &element2D::doSomething; //OK
    ((myElement).*(myElement.myNode.FunctionPtr))();        //OK

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在标记线上收到错误:

pointer to member type 'void (element2D::)()' incompatible with object type 'node2D'
Run Code Online (Sandbox Code Playgroud)

我真的很感谢你的帮助.今天有类似的问题部分帮助了我:链接.但它似乎并不是我的问题的完整答案.

实际上这两个问题只有一个区别 - 调用函数的点.

谢谢你的时间

c++ member-function-pointers function-pointers

5
推荐指数
1
解决办法
1290
查看次数

如何加快c ++中二维三角矩阵的内存分配?

我需要为一个代表三角矩阵的非常大的数组分配内存.我写了以下代码:

const int max_number_of_particles=20000;
float **dis_vec;

dis_vec = new float **[max_number_of_particles];

for (i = 0; i<max_number_of_particles; i++)
  dis_vec[i] = new float *[i];

for (i = 0; i<max_number_of_particles; i++)
  for (j = 0; j<i; j++)
    dis_vec[i][j] = new float[2];
Run Code Online (Sandbox Code Playgroud)

问题是这样做所需的时间(分配内存)随着矩阵大小的增加而迅速增加.有谁知道这个问题更好的解决方案?

谢谢.

c++ matrix triangular dynamic-allocation

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