使用指向类的指针访问成员变量

Accessing member variables with a pointer to a class

本文关键字:指针 访问 成员 变量      更新时间:2023-10-16

我在这里遇到了一些麻烦,使用c++通过指针访问成员变量。

假设我有下面的类,它有一些输出和一个唯一的标记。

class CSource
{
   public:
   int tag;
   double output;
}

我想在结构体中存储一个指向类和标签的指针,就像这样

struct foo
{
    CSource *source;
    int sourceTag;
}

然后在第二个类中,有一个成员函数,该函数以指向CSource类的指针作为参数

class CDest
{
    public:
    void addSource(CSource *sourcePtr);
}

成员函数将指针和标记存储到struct

void CDest::addSource(CSource *sourcePtr)
{
    foo temp;
    foo.source = sourcePtr;
    foo.tag-> sourcePtr.tag; 
}

最后一行给出了错误"error: expression must have pointer type."我只想要原始的标签值,而不是指针,因为下一步是搜索一个列表,看看源是否已经被添加,添加它,然后有一个逆函数搜索列表,并删除结构体,如果它在那里使用标签。

应该使用变量名,而不是类名:

foo temp;
temp.source = sourcePtr;
temp.tag = sourcePtr->tag; 

试试这个"foo "。" tag = sourcePtr->tag"而不是"foo.tag->sourcePtr.tag".

在此之后您将不会得到编译错误。

顺便说一下,如果你的目的是唯一地插入"CSource"对象,你可以使用std::set而不是使用链表。