小编TFM*_*TFM的帖子

将一个指向成员的指针函数转换为同一个类的另一个指针

将指向成员函数的指针转换为使用同一类的另一个指向成员函数的函数是否合法reinterpret_cast?以下示例有效.但这是合法的吗?

#include<iostream>
#include<vector>
#include<string>

class A
{
    public:
    void func_int(int x) { std::cout << x << std::endl; }
    void func_string(std::string const& x) { std::cout << x << std::endl; }
};

int main()
{
    std::vector<void(A::*)()> v;
    v.push_back(reinterpret_cast<void(A::*)()>(&A::func_int));
    v.push_back(reinterpret_cast<void(A::*)()>(&A::func_string));
    A a;
    (a.*reinterpret_cast<void(A::*)(int)>(v[0]))(5);
    (a.*reinterpret_cast<void(A::*)(std::string const&)>(v[1]))(std::string{"Test"});

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

c++ member-function-pointers reinterpret-cast

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

什么是`myLibrary!__ scrt_stub_for_is_c_termination_complete + 0x12345`

该符号myLibrary!__scrt_stub_for_is_c_termination_complete+0x12345出现在崩溃的应用程序的堆栈跟踪中。它是使用MSVC2015编译的C ++,并且大量使用Qt。

myLibrary 没有显式实现该名称的任何内容。

Google对该名称显示了一些点击率,因此显然它并不特定于该应用程序。但我找不到对此的解释。

c++ windows debugging msvcrt stack-trace

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

与std :: map相比的操作数顺序

说我有:

bool operator<(Type const& lhs, Type const& rhs) { /* ... */ }
std::map<Type, void*> m;
Run Code Online (Sandbox Code Playgroud)

如果我现在这样做

Type t{};
m.find(t);
Run Code Online (Sandbox Code Playgroud)

t总是在左侧的参数中结束,operator<并将m它的元素与右侧的参数进行比较(反之亦然)?

或者这种实现是否依赖,可以采用哪种方式?

c++ stdmap language-lawyer

3
推荐指数
2
解决办法
52
查看次数