小编Chr*_*ter的帖子

访问结构成员的模板函数

我有一个包含其他结构以及原始数据类型的结构。我希望能够使用模板函数访问每个成员,包括主结构中包含的结构的成员。

例如:

struct B {
    int y;
    int z;
};

struct A {
    int x;
    B b;
};

template <typename TMember>
bool doSomething(A *a, TMember member) {

    a->*member = 5;  // some code accessing member

}

// Then access it with:

doSomething(&myA, &A::x);

// and likewise

doSomething(&myA, &A::b.y);
Run Code Online (Sandbox Code Playgroud)

但是,第二个不会编译并抛出“引用中缺少对象”错误。我认为这是因为 A 没有成员?

是否有办法获得我想要的功能,或者需要编码不同的功能?

(请注意,这只是一个示例,我的代码包含更大的结构,比仅仅编写第二个函数可以节省更多时间。)

谢谢!

c++ templates struct

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

标签 统计

c++ ×1

struct ×1

templates ×1