【问题标题】:Accessing member variables with a pointer to a class使用指向类的指针访问成员变量
【发布时间】:2015-09-04 18:35:36
【问题描述】:

我在这里遇到了一些麻烦,使用 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 如果它在那里使用标签。

【问题讨论】:

  • 在 C++ 中不可能有一个指向类的指针,但是你可以有一个指向类实例的指针。

标签: c++ class pointers data-structures member-variables


【解决方案1】:

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

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

【讨论】:

  • foo 没有名为 tag 的成员,我没有看到任何将类型名称用作变量的尝试。
  • @CaptainObvlious 和foo temp; foo.source = sourcePtr;you 认为是什么?
【解决方案2】:

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

之后不会出现编译错误。

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

【讨论】:

    猜你喜欢
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 2018-03-24
    相关资源
    最近更新 更多