吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1201|回复: 5
收起左侧

[求助] 自己实现的数组,当类没有默认构造函数时怎么用?

[复制链接]
Pammer 发表于 2020-4-28 15:30
本帖最后由 Pammer 于 2020-4-28 15:32 编辑

[C++] 纯文本查看 复制代码
template<typename T>
class MyArray
{
public:
        MyArray(const size_t& Length)
        {
                this->Value = new T[Length];
                return;
        }
private:
        T* Value;
};

class Test
{
public:
        Test(int Arg)
        {
                this->Value = Arg;
        }
private:
        int Value;
};

int main()
{
        MyArray<Test> a(0);
}

让它不报错且不更改Test类时,该怎样写?
用vector容器倒是不报错
[C++] 纯文本查看 复制代码
vector<Test> a(0);

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

AmIzero 发表于 2020-4-28 16:23
[C++] 纯文本查看 复制代码
template<typename T>
class MyArray
{
public:
    MyArray(const size_t& Length)
    {
        this->Value = new T*[Length];
        return;
    }
    void push(const T& obj) {
        T* pNOBJ = new T(obj);
        Value[s++] = pNOBJ;
    }
    void pop() {
        if(s > 0)
            s--;
    }
    T& top() {
        return *Value[s - 1];
    }
    size_t size() {
        return s;
    }
private:
    T** Value;
    size_t s = 0;
};

class Test
{
public:
    Test(int Arg)
    {
        this->Value = Arg;
    }
    int Value;
};

int main()
{
    MyArray<Test> a(200);
    Test b(1);
    a.push(b);
    for (int i = 0; i < 20; i++) {
        a.push(Test(i));
    }
    for (;a.size();) {
        cout << a.top().Value << " ";
        a.pop();
    }
}

另外vector也不能work gcc 6.3.0

免费评分

参与人数 1吾爱币 +1 收起 理由
Pammer + 1 谢谢@Thanks!

查看全部评分

 楼主| Pammer 发表于 2020-4-28 16:29
AmIzero 发表于 2020-4-28 16:23
[mw_shl_code=cpp,true]template
class MyArray
{

额,好像vector也不能这样写,解决了,谢谢
 楼主| Pammer 发表于 2020-4-28 16:33
AmIzero 发表于 2020-4-28 16:23
[mw_shl_code=cpp,true]template
class MyArray
{

再问个问题,MyArray<int> a = { 1,2,3,4 };
这样的构造函数该怎样写?
AmIzero 发表于 2020-4-28 16:39
Pammer 发表于 2020-4-28 16:33
再问个问题,MyArray a = { 1,2,3,4 };
这样的构造函数该怎样写?

这个问题有点复杂 需要用到 initializer_list
你可以去看看std的vector是怎么实现的
 楼主| Pammer 发表于 2020-4-28 17:21
AmIzero 发表于 2020-4-28 16:39
这个问题有点复杂 需要用到 initializer_list
你可以去看看std的vector是怎么实现的

虽然看不懂STL里边的vector(一堆define,还有下划线),但还是谢谢你
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 17:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表