2015-09-04 87 views
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; 
} 

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

+0

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

回答

1

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

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

'foo'没有名为'tag'的成员,我没有看到任何使用类型名称作为变量的尝试。 –

+0

@CaptainObvlious,这是什么'foo temp; foo.source = sourcePtr;'你觉得? –

0

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

之后您将不会收到编译错误。顺便说一下,如果你的动机是只插入“CSource”对象,你可以使用std :: set而不是使用链表。