创建指向“this”对象的指针

时间:2013-02-22 01:49:30

标签: c++ const

我似乎在一个项目中遇到问题,试图创建一个指向“this”的指针,其中“this”是C ++列表中的第一个LinkedList。第一个对象包含数据,第二个包含...等,直到this->m_nextNULL

编译器正在向我吐口水:

linkedlist.hpp:55:22: error: invalid conversion from âconst LinkedList<int>* constâ to âLinkedList<int>*â [-fpermissive]

我做错了什么?

template <typename T>  
int LinkedList<T>::size() const
{
  int count = 0;
  LinkedList* list = this; // this line is what the compiler is complaining about

  //adds to the counter if there is another object in list
  while(list->m_next != NULL)
  {
    count++;
    list = list->m_next;
  }
  return count;
}

3 个答案:

答案 0 :(得分:5)

成员函数标记为const。这意味着this也是const。你需要这样做:

const LinkedList<T>* list = this; // since "this" is const, list should be too
//               ^
//               |
//               Also added the template parameter, which you need, since "this"
//               is a LinkedList<T>

答案 1 :(得分:1)

尝试更改

LinkedList* list = this; // this line is what the compiler is complaining about

LinkedList<T> const * list = this; 
          ^^^ ^^^^^   

答案 2 :(得分:1)

更改

LinkedList* list = this; 

const LinkedList<T>* list = this; 
^^^^^           ^^^ 

由于功能定义为const this指针会自动类型为const LinkedList<T>*

因此,无法为非const指针分配const指针,解释错误。

如果您尝试使用非<T>参数,丢失的int可能会给您带来错误。