小编Ver*_*era的帖子

析构函数中删除的问题

我写了这段代码.
构造函数正常工作,但在析构函数中,我得到"Windows触发了一个断点".我该怎么纠正这个?

template class CyclicalArray { 
private: 
   T* mem_ptr;
public: 
   CyclicalArray(size_t capacity, const T& default_value) {
   this->default_value = default_value; 
   this->capacity = capacity; 
   head_index = 0; 
   mem_ptr = ::new T[capacity]; //memory allocating 
   for(T* p = mem_ptr; p < mem_ptr + capacity * sizeof(T); p += sizeof(T)) { 
       ::new (p) T (default_value); //initialization 
   } 
} 
~CyclicalArray() { 
   for(T* p = mem_ptr + sizeof(T); p < mem_ptr + capacity * sizeof(T); p += sizeof(T)) { 
      p->~T();
   } 
   delete[] mem_ptr; 
}
Run Code Online (Sandbox Code Playgroud)

c++

4
推荐指数
2
解决办法
371
查看次数

使用fread/fwrite作为STL字符串.这是对的吗?

我有一个包含字符串的结构.像这样的东西:

struct Chunk { int a; string b; int c; };

所以,我想,我不能使用fread和fwrite函数从文件中读写这个结构.因为字符串可能会保留不同的内存容 但这样的代码工作正常.

Chunk var;

fwrite(&var, sizeof(Chunk), 1, file);

fread(&var, sizeof(Chunk), 1, file);

它真的有些问题吗?

c++ string fwrite fread

4
推荐指数
1
解决办法
2285
查看次数

如何限制类的实例数?

作为练习,我希望创建一个不能超过N个实例的类.我怎样才能做到这一点?

例如,假设您要限制与数据库的连接数,以便不超过N个用户可以同时连接.我理解如何制作一个单身人士:

class Singleton {

private:

    Singleton(const Singleton&);

    Singleton();

public :

    static Singleton Instance() {

         static Singleton p;

         if(!p) {

                p = new Singleton;

         }
};
Run Code Online (Sandbox Code Playgroud)

但如果N> 1个对象,我需要帮助.

c++

1
推荐指数
1
解决办法
3583
查看次数

标签 统计

c++ ×3

fread ×1

fwrite ×1

string ×1