不知道为什么不能接受CDialog并在cpp文件中设置内存空间。它只在头文件中工作。这不是一回事吗??谢谢
头文件:
public:
CDialog *m_pages[6]; // this works头文件:
CDialog *m_pages;cpp文件
m_pages = new CDialog[6]; //this fails在看到我做错了什么之后(第一张海报:“创建一个指向CDialog的六个指针的数组”)。这就是我错过的:(现在它起作用了!)
CDialog **m_pages = new CDialog*[6]; //double pointer发布于 2012-04-08 18:46:39
检查一下文档。CDialogs在其构造函数中至少需要一个参数,这就是为什么不能在第二个示例中分配它们,因为它们没有默认的构造函数。
在第一个示例中,您正在创建一个指向CDialog的6个指针的数组。这与一个由六个CDialog组成的数组完全不同,这是您在第二个数组中试图分配的。
发布于 2012-04-08 19:04:21
这些标记非常不同:这个CDialog *m_pages[6];是一个指向CDialog的6个指针数组,而m_pages = new CDialog[6];是一个6 CDialog的数组。
要使用第二个声明,我认为您可以这样做
#include <iostream>
using namespace std;
struct Object {
Object(int id) : id(id) {}
int id;
};
void main_construct_vector()
{
Object *a = new Object[2] {Object(1), Object(2)};
cout << a[0].id << ' ' << a[1].id << endl;
}如预期的代码输出
1 2当然,这不是通常的方法.
https://stackoverflow.com/questions/10065334
复制相似问题