访问向量元素的类中的“this”指针

时间:2013-01-28 04:09:56

标签: c++ class pointers

我在实现文件中有以下内容......

void ClientList::interestCompare(vector<string> intr)
{
    for(int index = 0; index < intr.size(); index++)
    {
        this->interests[index];  
    }
}

这在规范文件中......

class ClientList
{
private:
// A structure for the list
struct ListNode
    {
        char gender;
        string name;
        string phone;
        int numInterests; // The number of interests for the client
        vector<string> interests; // list of interests
        string match;
        struct ListNode *next;  // To point to the next node
    }; 
//more stuff
...}

是否可以使用“this”指针访问struct中的“interest”向量?

如果是这样的话。

正如我现在所做的那样,我将ListNode指针初始化为head以访问列表。我只是想知道“this”指针是否只能访问类的成员,或者他们是否可以访问类中嵌入的更深层的ADT变量。

这个问题是否有意义?

2 个答案:

答案 0 :(得分:4)

您只在ClientList类中声明了ListNode类型,这并不意味着您拥有ClientList的实例。因为你已经使用std :: vector,你可以使用std :: vector或std :: list而不是实现另一个列表

class ClientList
{
private:
// A structure for the list
  struct Client
  {
    char gender;
    std::string name;
    std::string phone;
    int numInterests; // The number of interests for the client
    std::vector<string> interests; // list of interests
    std::string match;
   }; 
   std::vector<Client> clients;
  //more stuff
};

编辑:

如果您想比较两个列表,请使用std::set_intersection,它需要两个容器sorted

void ClientList::FindClientHasCommonInterest(const vector<string>& intr)
{
   for(auto client = clients.begin(); client != clients.end(); ++client)
   {
      std::vector<std::string> intereste_in_common;
       std::set_intersection((*client).begin(), (*client).end(), 
                             intr.begin(), intr.end(), 
                             std::back_inserter(intereste_in_common));
       if (intereste_in_common.size() >= 3)
       {
            // find one client
       }
   }  
}

答案 1 :(得分:3)

不,嵌套类的Java和C ++之间存在差异。 C ++嵌套类与Java中的 static 嵌套类基本​​相同。因此,您必须使用嵌套结构的实例来访问其成员。