这是我的结构:

struct HashTable{
      int tsize;
      int count;    //No. of elements in table
      struct HashTableNode **Table;
};


这就是我想要做的:

struct HashTable *h=(struct HashTable *)malloc(sizeof(struct HashTable));
if(!h) return NULL;
h->tsize=size/LOAD_FACTOR;
h->count=0;
h->Table=(struct HashTableNode**)malloc(sizeof(HashTableNode *)*h->tsize);//this line


我无法使用new运算符将最后一行转换为其等效的C ++版本

解决了

我将代码更改为此:

h->Table=new HashTableNode*[h->tsize];
for(int i=0;i<h->tsize;i++)
    h->Table[i]=new HashTableNode;


并自己和自己做了一些调试。解决了。

感谢大家。

最佳答案

显然,我同意您所提出的问题下的大多数评论,但如果您确实在代码中需要指针,则问题的解决方案可能如下所示。

使用typedef说明符来定义类型:

typedef HashTableNode* PHashTableNode;


接着:

h->Table=new PHashTableNode[h->tsize];

关于c++ - 如何将此C行转换为等效的C++?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39876750/

10-12 02:59