C/C++ debug(二)

来源:互联网 发布:码畜 知乎 编辑:程序博客网 时间:2024/06/07 06:05

C/C++ debug(一)
C/C++ debug(二)
C/C++ debug(三)
C/C++ debug(四)

断点 + 监视 替代老土的 print;

“不允许使用不完整的类型”

使用了类的前置声明(forward declaration),未真正的将类的头文件 include 进来。

“函数已声明,不可访问”

  • (1)从外部访问私有成员函数

  • (2)private 继承。

    这点尤见多重继承的情形,多重继承要为每一个继承的基类前都要加public关键字,而不只是在第一个基类之前加就可以了。

“对象包含阻止匹配的类型限定符”

class A{public:    void foo(int n)  const    {        for (int i = 0; i < n; ++i)            _values.push_back(i);                        // 对象包含阻止匹配的类型限定符    }private:    std::vector<int> _values;};

此时的解决方案:

  • (1)将 foo() 的 const 修饰符去掉
  • (2)将 _values 私有成员变量声明为 mutable

vector subscript out of range



vector 以及其他容器一般都首先申请存储空间(resize),然后赋值,或者在构造时指定存储空间的大小(当然也可以指定初值)。

否则如果不经分配空间就直接,索引或赋值,就会报上图所示的异常。

对 vector 容器,两种搭配:

  • (1) coll.reserve() ⇒ coll.push_back()
  • (2) coll.resize() ⇒ coll[i]
0 0
原创粉丝点击