我正在使用VS2010 Ultimate。 擁有代碼:關於VS2010中斷點的問題C++
//file IntSet.h
#include "stdafx.h"
#pragma once
/*Class representing set of integers*/
template<class T>
class IntSet
{
private:
T** myData_;
std::size_t mySize_;
std::size_t myIndex_;
public:
#pragma region ctor/dtor
explicit IntSet();
virtual ~IntSet();
#pragma endregion
#pragma region publicInterface
IntSet makeUnion(const IntSet&)const;
IntSet makeIntersection(const IntSet&)const;
IntSet makeSymmetricDifference(const IntSet&)const;
void insert(const T&);
#pragma endregion
};
//file IntSet_impl.h
#include "StdAfx.h"
#include "IntSet.h"
#pragma region ctor/dtor
template<class T>
IntSet<T>::IntSet():myData_(nullptr),
mySize_(0),
myIndex_(0)
{
}
template<class T>
IntSet<T>::~IntSet()
{
}
#pragma endregion
#pragma region publicInterface
template<class T>
void IntSet<T>::insert(const T& obj)
{//BREAKPOINT---------------------------<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
/*IF I SET A BREAKPOINT HERE AND AFTER THAT I CHANGE SOMETHING IN THE BODY
I'M GETTING MSG SAYING THAT THE BREAKPOINT WILL NOT CURRENTLY BE HIT, AFTER I REBUILD
THE BREAKPOINT IS VALID AGAIN*/
/*Check if we are initialized*/
if (mySize_ == 0)
{
mySize_ = 1;
myData_ = new T*[mySize_];
}
/*Check if we have place to insert obj in.*/
if (myIndex_ < mySize_)
{
myData_[myIndex_++] = new T(obj);
return;
}
/*We didn't have enough place...*/
T** tmp = new T*[mySize_];//for copying old to temporary basket
std::copy(&myData_[0],&myData_[mySize_],&tmp[0]);
delete myData_;
auto oldSize = mySize_;
mySize_ *= 2;
myData_ = new T*[mySize_];
std::copy(&tmp[0],&tmp[oldSize],&myData_[0]);
myData_[myIndex_] = new T(obj);
++myIndex_;
}
#pragma endregion
標記爲斷點見臨客。 謝謝。
您的標題可能會使用一些改進... – ChristopheD 2010-04-15 18:32:28
似乎並不像一個錯誤...但它不是最佳的方式... VS不能正確地編譯背景...... – 2010-04-15 18:32:56
是很多問號。但是,這個屏幕代碼應該是一個錯誤?你忘了提問。 – jalf 2010-04-15 18:33:16