0

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

假设我有以下课程,它有一些输出和一个独特的标签。

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

我想将指向类和标签的指针存储在这样的结构中

struct foo
{
    CSource *source;
    int sourceTag;
}

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

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

并且该成员函数将指针和标记存储到结构中

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

最后一行给了我错误“错误:表达式必须具有指针类型。” 我只想要原始标记值而不是指针,因为下一步是搜索列表以查看是否已添加该源,添加它,然后有一个反向函数搜索列表并删除struct 如果它在那里使用标签。

4

2 回答 2

2

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

foo temp;
temp.source = sourcePtr;
temp.tag = sourcePtr->tag; 
于 2015-09-04T18:38:45.413 回答
0

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

之后您将不会收到编译错误。

顺便说一句,如果您的动机是唯一地插入“CSource”对象,则可以使用 std::set 而不是使用链表。

于 2015-09-05T05:52:04.633 回答