如何使用指针访问 public 结构的变量

How use pointer to access variables of public struct

我有一个指向 class 的指针,我正在尝试使用它来访问 class' public 结构。我看过 access member var using ptr, as well as access memb struct from ptr class,但是当您查看链接时,这不是我想要做的。

我在做一些可以构建的东西时遇到了问题。代码中的示例没有指针,但我有一个指向 IFM 的指针可以使用。有谁知道如何使用指针(指向 IFM)访问 public 结构(在 IFM 中)?

//snippet of code that is trying to access struct in IFM:
const IFM *pJunk = rData1.getM(); //this is fine
pJunk->JunkStruct::Junk.xs; //this doesn't work

The struct in IFM.h:
class IFM final : public IFO
{
public:
    typedef struct JunkStruct
    {
        JunkStruct() = default;
        ~JunkStruct() = default;
        JunkStruct(const IFM::JunkStruct&) = default;
        JunkStruct(const double& first, const double& second, const double& third, const double& fourth, const double& fifth, const double& sixth) :
xs(first), ysk(second), xsk(third), ys(fourth), x(fifth), y(sixth)
            {}
        IFM::JunkStruct& operator=(const IFM::JunkStruct&) = default;

        // Initialized        
        double xs = 1.0;
        double ys = 0.0;
        double xsk  = 0.0;
        double ysk  = 1.0;
        double x = 0.0;
        double y = 0.0;

    } Junk;


...

OPs 成员是私有的。它被设计成隐藏的。这没东西看。

结构只是一种类型。如果 IFM 中没有成员属于 JunkStruct 类型,则没有数据可供访问。要使用该内部类型,您可以看到这个最小示例

struct Outer
{
    struct Inner{
        int innerMember;
    };
};

int main() {
    Outer::Inner inner;
    inner.innerMember = 4;
    std::cout << inner.innerMember << "\n";

    Outer outer;
    Outer* outerP = &outer;
    outer-> No access to innerMember, it does not exist.
}

另一方面,如果该结构不是 typedef 而只是一个结构,则该定义将类似于:

struct Outer
{
    struct Inner{
        int innerMember;
    };
    Inner outerMemberInner;  // 
};

int main() {
    Outer outer;
    Outer* outerP = &outer;
    outerP->outerMemberInner.innerMember = 4;
// this might be what you are looking for
    std::cout << outerP->outerMemberInner.innerMember;
}

JunkouterMemberInner

别名为 Junk 的 JunkStruct 类型属于 IFM 类型,而不属于 IFM 对象或指针。