从另一个类中的一个类调用方法

Posted

技术标签:

【中文标题】从另一个类中的一个类调用方法【英文标题】:Calling a method from one class in another class 【发布时间】:2017-08-05 11:40:11 【问题描述】:

我有这门课:

boer.h

#pragma once
#include <functional>
#include <iostream>

class boer

private:

    std::function<void(int id_)> someFun;

public:
    boer();
    ~boer();

    void setSomeFun(std::function<void(int id_)> someFun_);

    void getSomeFun();
;

boer.cpp

#include "boer.h"

boer::boer()  

boer::~boer()  

void boer::setSomeFun(std::function<void(int id_)> someFun_)

    someFun = someFun_;


void boer::getSomeFun()

    someFun(12345);

还有这个类:

飞机.h

#pragma once
#include <functional>
#include <iostream>
#include "boer.h"

class aircraft

private:

    boer Boer;

public:
    aircraft();
    ~aircraft();

    void source_forSomeFun(int id_);
;

aircraft.cpp

#include "aircraft.h"

aircraft::aircraft()  

aircraft::~aircraft()  

void aircraft::source_forSomeFun(int lol_)

    std::cout << "AMAZING!!!" << std::endl;

我需要将aicraft 中的void source_forSomeFun(int id_);boer 中的std::function&lt;void(int id_)&gt; someFun; 连接起来。我怎样才能做到这一点?也许还有其他方法,但我认为这种方法是最可取的。

int main()

    aircraft Aircraft;
    boer Boer;

    Boer.setSomeFun(???); // here

    Boer.getSomeFun();

    int i;
    std::cin >> i;
    return 0;

【问题讨论】:

&amp;aircraft::source_forSomeFun 没有合适的构造函数用于从“std::function”中的“void (aircraft::*)(int id_)”转换 【参考方案1】:
Boer.setSomeFun([&](int v)aircraft.source_forSomeFun(v););

使用 lambda。

【讨论】:

一些修复:Boer.setSomeFun([&amp;](int v) Aircraft.source_forSomeFun(v);); 和这项工作。谢谢!

以上是关于从另一个类中的一个类调用方法的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个类调用执行 segue 方法?

Tkinter - 在类中使用Button命令从另一个类调用函数

从另一个类调用方法在 xcode 上生成 SIGABRT 错误

如何从另一个类调用@selector 方法

静态方法 - 如何从另一个方法调用一个方法?

从另一个类调用委托方法