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]