小编Mar*_*tin的帖子

当析构函数调用抽象函数时会发生什么

我在以下代码中无法理解崩溃的原因:

class A {
public:
    virtual ~A() { goo(); }
    void goo() { absFoo(); }
    virtual void absFoo() = 0;

};

class B : public A {
public:
    void absFoo() { cout << "In B \n"; }
};

int main() 
{
    B b1;
    b1.goo();
}
Run Code Online (Sandbox Code Playgroud)

主要按照预期打印"In B",但最终崩溃时,我无法调试它,编译器弹出一个奇怪的消息.

所以我的问题是,当A的析构函数调用"goo()"时,"absFoo()"会崩溃, 因为我们指的是一个抽象函数?

或者编译器是否实际在派生类中查找定义?(并且它不再存在,因为它事先被破坏所以它崩溃了)

我知道如果我们直接从析构函数调用"absFoo()",原因就是抽象函数.但是因为这里是一个外部函数,称为"absFoo()",我无法理解真正的原因.

c++ crash virtual constructor abstract

16
推荐指数
3
解决办法
1489
查看次数

在Azure持久功能活动中使用ILogger?

我正在使用天蓝色函数作为表插入事件触发器,特别是持久函数,并且我试图在我的活动函数中生成一些日志。

问题是活动函数没有收到任何“ILogger”,编排器也没有收到任何“ILogger”,因此我没有任何访问权限,也无法生成用于调试的日志。

整体流程为:

HTTP 请求 => Duarble HTTP 启动器 => 持久功能协调器 =>持久功能活动

有没有办法为从 ILogger 派生的某些类创建记录器实例?或者也许是一种将 ILogger 实例从 HTTP 启动器传递到活动函数的方法?

任何解决方案将不胜感激!

c# cloud azure azure-devops azure-functions

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