C++ 怎样动态初始化有二维数组的结构体

如上图,我定义了一个结构体,然后再CreateMGrah函数中定义了一个指向结构体的指针。怎样进行动态初始化使结构体中的数组能分配到内存?

结构体这里

struct MGraph

{...};

然后定义处

MGraph *G = new MGraph();


对于网友采纳答案的质疑:

不知道你是如何坦言“不能用“这三个字的?首先,c++中结构体和类唯一的区别在于默认的访问权限不同,其余完全一样。其次,int *p = new int(5),请问我的new新建的是类还是int型变量?最后,既然用了c++,就不要在用malloc这种C语言的机制了。不知道不要装。


最后对于网友采纳的答案,附一段可编译运行的代码,质问关于new不能用于分配内存给结构体

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-29
不能用new,new是对类的操作。

MGraph *G;

G = (MGraph*)malloc(
sizeof(MGraph));本回答被网友采纳
第2个回答  2014-10-29
G = new MGraph;追问

嗯,谢谢。你能解释一下
MGraph *G;
G = new MGraph;
两个MGraph的意思吗

追答

你这是用C++对吧,C++的struct默认就是class,也就是实际上是对象,只是每个成员的都是public的,而struct在C++会有默认构造函数,new MGraph就是调用strut的默认构造函数在堆空间里创建一个struct,然后MGraph* G拿到这个struct的指针,这个跟malloc(sizeof(MGraph))的作用是一样的。

相似回答