c++ 动态分配类成员数组大小

C++语言 码拜 9年前 (2016-04-27) 1638次浏览
本人想通过构造函数或其他什么方式,动态分配数组成员的大小,问一下要怎么做呢?
class a{
public:
int b[maxm];
}
maxm是未知的
解决方案

5

#include <cstdlib>
#include <new>
class a {
public:
    void operator delete(void* ptr) {
        std::free(ptr);
    }
    static auto create(int len) -> a* {
        if (const auto ptr = std::malloc(sizeof(a) + sizeof(int)*len)) {
            return new(ptr) a();
        }
        return nullptr;
    }
    int b[0];
};
int main() {
    auto a0 = a::create(50);
    a0->b[49] = 0;
    delete a0;
    return 0;
}

编译器不支持空数组的话,弄成1就行了,然后malloc时再减去那一个的空间就行,
不过这个类就这一个成员,用这个意义不大。
有时候需要动态构造一个对象,这个对象又要需要一个运行时数组的时候,这个最方便了。

10

这么写:

class a{
public:
	int* b;
	a(int size)
	{
		b = new int[size];
	}
};

5

template<int N>
class MyArray
{
private:
    int vector[N];
public:
    MyArray()
    {
    }
};
int main(int argc, char** argv){
    MyArray<10>  myArray;
	return 0 ;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c++ 动态分配类成员数组大小
喜欢 (0)
[1034331897@qq.com]
分享 (0)