gpt4 book ai didi

c++ - 指向模板类的函数指针

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

我需要一些关于函数指针和模板之间奇怪组合的帮助...

我的目标:

你有一个类:template<typename B> class A , A 实例化一个 B 成员。现在我想访问 B getter/setter。

我试过这个:

class B_example
{
public:
B_example(int v):m_var(v){}
int getVar() { return m_var; }
void setVar(int v) { m_var = v; }

private:
int m_var;
};


template<typename B> class A
{
public:
A():m_b(B(5))
{
get = &m_b.getVar;
set = &m_b.setVar;
}

int (B::*get)();
void (B::*set)(int);

private:
B m_b;
};


int main(int argc, char** argv)
{
A<B_example> A_instance;
B_example B_instance(5);


int a = (A_instance.get*)();

std::cout << a << std::endl;
}

感谢您的帮助。

亚历山大

最佳答案

首先,修复语法错误:

get = &B::getVar;
set = &B::setVar;

然后,需要在对象上调用成员函数指针。在不知道这些奇怪指针的用途的情况下,我无法猜到你想在这里做什么。也许您想调用 B_instance:

int a = (B_instance.*A_instance.get)();

或者您可能想在 A_instance 中的 m_b 对象上调用它;但你不能这样做,因为它是私有(private)的。如果是这种情况,您可能只需要常规成员函数,而不是奇怪的函数指针

int get() {return m_b.getVar();}
void set(int v) {m_b.setVar(v);}

关于c++ - 指向模板类的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24452654/

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