我有下面这段代码(简化了这个问题):指针到数据成员的数据成员
struct StyleInfo
{
int width;
int height;
};
typedef int (StyleInfo::*StyleInfoMember);
void AddStyleInfoMembers(std::vector<StyleInfoMember>& members)
{
members.push_back(&StyleInfo::width);
members.push_back(&StyleInfo::height);
}
现在,我们不得不重组这一点,我们做了是这样的:
struct Rectangle
{
int width;
int height;
};
struct StyleInfo
{
Rectangle size;
};
typedef int (StyleInfo::*StyleInfoMember);
void AddStyleInfoMembers(std::vector<StyleInfoMember>& members)
{
members.push_back(&StyleInfo::size::width);
members.push_back(&StyleInfo::size::height);
}
如果这一切看起来像一个愚蠢的事情,或者如果你觉得有适用于此BOOST由于某种原因一个很好的机会,我必须警告你,我真的简化一切归因于手头的问题:
错误C3083:“尺寸”:该符号左侧的“::”必须是一个类型
我想说明的一点是,我不知道什么是正确的语法就是在这里使用。这可能是因为“StyleInfo”不是从地址开始的正确类型,但是在我的项目中,我可以修复这种情况(这里有一个整体框架)。我根本不知道如何指向这个成员内的成员。
试用评论#1 – 2009-04-03 06:56:32