小编pre*_*old的帖子

我可以将成员数据指针分配给派生类型吗?

这可能最好用示例代码显示.以下无法使用g ++编译:

struct Base {
};

struct Derived : public Base {
};

struct Container {
    Derived data_;
};

int main(void) {
    Base Container::*ptr = &Container::data_;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:invalid conversion from 'Derived Container::*' to Base Container::*'.语言不允许这样做吗?这是编译器错误吗?我使用了错误的语法吗?

请帮忙!

关于为什么我要这样做的一些背景:我有几个我想主要用作派生类型的成员数据,但我希望能够通过一些常用代码填充它们.数据将以任意顺序出现,并有一个字符串标签,我将用它来选择要填充的相应成员数据.我计划创建一个std::map<std::string, Base Container::*>通过公共接口为每个成员分配数据.我想避免使用巨型if else构造来找到正确的成员数据.

c++ member-pointers

13
推荐指数
1
解决办法
351
查看次数

标签 统计

c++ ×1

member-pointers ×1