相关疑难解决方法(0)

在运算符重载中使用()

我用operator()遇到了这段代码.我以前从未见过这个(我见过+,>, - <<).有人可以解释何时应该使用它以及如何使用它?

 class sortResults
    {
    public:
        bool operator() (Result const & a, Result const & b);
    };
Run Code Online (Sandbox Code Playgroud)

c++

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

Embarcadero TThread:用C++传递TThreadMethod

编辑:现在我对发生的事情有了更好的了解,我想我可以更好地说出这个问题,因此它更有用.

我试图在C++中复制以下delphi代码

TThread.Queue(nil, 
    procedure
    begin
        LogMessage("test");
    end
    );
Run Code Online (Sandbox Code Playgroud)

代码的目的是调用一个TMemo以线程安全的方式更新表单的方法.这是我试图调用的方法的C++版本Thread.Queue

void __fastcall TClientForm::LogMessage( String message )
{
    MemoLog->Lines->Add( message );
}
Run Code Online (Sandbox Code Playgroud)

因为我使用的是没有CLANG增强功能的BCC32编译器,所以不能使用Lambda.相反,根据这个文档,我需要创建一个继承TThreadProcedureInvoke()方法来覆盖方法来完成我需要完成的工作.然后我可以将该类的实例传递给TThread::Queue.

我创建了以下继承TThreadProcuedure并包含invoke方法的类.

class TMyThreadProcedure : TThreadProcedure
{
    void __fastcall Invoke( String message );
};
Run Code Online (Sandbox Code Playgroud)

但是,由于TThreadProcedure是一个抽象类,我不能简单地创建它的实例来传递TThread::Queue.TThreadProcedure当我将类的实例传递到其中时,继承和定义要调用的函数的正确方法是什么TThread::Queue

c++ delphi c++builder-xe8

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

std :: function的目的是什么?

我在推理如何编写和设计几个应该处理特定文件格式的函数,这些函数可能有不同的实现和不同的版本,每个函数需要一种不同的方法来解码文件中的这些信息.

我像往常一样浏览标准库,我得到了一个std::function存在的余数,但问题是我无法弄清楚为什么我可能有兴趣使用std::function,在C和C++编程时的第一个规则之一是如果你不必引用你不一定要命名的东西,你可以获得未命名的数据结构和未命名/ lambda函数,但函数通常有一个名称,而lambda的类型仍然是实现根据我的记忆定义,那么需要std::function什么?

例如,在我的情况下,我正在考虑使用a map或an hash table(但所涉​​及的函数数量实际上很小,现在最多2-3个),其中一对由tag(表示文件格式的版本/实现)+ functions,我想知道为什么我不能只使用std::string和函数指针作为每对的2种类型; 我也无法理解为什么我们std::function在标准库中.

我的意思是,当你需要一个未命名的函数并且你需要一个对象来描述它的状态时呢?

c++ c++11 c++14

-3
推荐指数
3
解决办法
1918
查看次数

C++ Functors解释

能否请您举例说明以下陈述

语句1

普通函数只有在签名不同时才有不同的类型.但是,当函数对象的签名相同时,它们可以具有不同的类型.实际上,函数对象定义的每个函数行为都有自己的类型.这是使用模板进行泛型编程的重大改进,因为您可以将功能行为作为模板参数传递

c++ functor c++11

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

标签 统计

c++ ×4

c++11 ×2

c++14 ×1

c++builder-xe8 ×1

delphi ×1

functor ×1