我在这里遇到一些麻烦,使用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是否在那里使用标签。
答案 0 :(得分:1)
您应使用变量名,而不是类名:
foo temp;
temp.source = sourcePtr;
temp.tag = sourcePtr->tag;
答案 1 :(得分:0)
试试这个“foo.tag = sourcePtr-> tag”而不是“foo.tag-> sourcePtr.tag”。
之后你不会收到编译错误。
顺便说一下,如果你的动机是唯一地插入“CSource”对象,你可以使用std :: set而不是使用链表。