gpt4 book ai didi

c++ - 模板类上的类型继承

转载 作者:行者123 更新时间:2023-11-30 04:48:54 28 4
gpt4 key购买 nike

<分区>

我试图在子类中定义新函数时使用父模板类中的类型,但我无法编译它。

但是,如果未定义 myecho(子类中未使用回调),它会编译并执行

我已经试过了:

  • 没有定义int myecho(T arg, callback cbk)

  • 使用范围int myecho(T arg, Foo::callback cbk)int myecho(T arg, Foo::callback cbk)

  • 使用语法使用 Foo::回调;

#include <cstdio>
#include <iostream>
#include <functional>

template <class T>
class Foo
{
public:
using callback = std::function<int (T param)>;

Foo() = default;
virtual ~Foo() = default;

int echo(T arg, callback cbk) { return cbk(arg);}
};

template <class T>
class _FooIntImp : public Foo<T>
{
public:
using Foo<T>::echo;

_FooIntImp() = default;
virtual ~_FooIntImp() = default;

int myecho(T arg, callback cbk)
{
return 8;
}
};

using FooInt = _FooIntImp<int>;

int mycallback( int param )
{
return param * param;
}

int main(int argc, char* argv[] )
{

FooInt l_foo;

std::cout << "Out "<<l_foo.echo(43,mycallback) << std::endl;
return 0;
}

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com