C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 无法将’this’指针从’const container’转换为’container&’大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在以下代码中遇到了STL编译错误.

#include <cstdio>
#include <String>

template <typename T>
class container {
public:
  container(std::string in_key="") {
    m_element_index = 0;
  }
  ~container() {
  }
  // Returns the numbers of elements in the container
  int size() {
    return m_element_index;
  }
  // Assignment operator
  // Assigns a copy of container x as the new content for the container object.
  container& operator= (const container& other) {
    if (this != &other) {
      for ( int idx = 0; idx < other.size(); idx++) {
      }
    }
    return *this;
  }
private:
  int m_element_index;
};

int main ( int argc,char** argv) {
  container<int> v1("my_container");
  container<int> v2("copy_cont");
  v2 = v1;
}

获取以下行的错误

for(int idx = 0; idx< other.size(); idX){ 错误

1>------ Build started: Project: test,Configuration: Debug Win32 ------
1>  test.cpp
1>e:\avinash\test\test\test.cpp(20): error C2662: 'container<T>::size' : cAnnot convert 'this' pointer from 'const container<T>' to 'container<T> &'
1>          with
1>          [
1>              T=int
1>          ]
1>          Conversion loses qualifiers
1>          e:\avinash\test\test\test.cpp(18) : while compiling class template member function 'container<T> &container<T>::operator =(const container<T> &)'
1>          with
1>          [
1>              T=int
1>          ]
1>          e:\avinash\test\test\test.cpp(30) : see reference to class template instantiation 'container<T>' being compiled
1>          with
1>          [
1>              T=int
1>          ]
========== Build: 0 succeeded,1 Failed,0 up-to-date,0 skipped ==========

解决方法

你需要改变这个:

int size() {
    return m_element_index;
  }

对此

int size() const {
    return m_element_index;
  }

告诉编译器你希望它允许在const实例上调用size().

大佬总结

以上是大佬教程为你收集整理的c – 无法将’this’指针从’const container’转换为’container&’全部内容,希望文章能够帮你解决c – 无法将’this’指针从’const container’转换为’container&’所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。