自己实现的数组,当类没有默认构造函数时怎么用?
本帖最后由 Pammer 于 2020-4-28 15:32 编辑template<typename T>
class MyArray
{
public:
MyArray(const size_t& Length)
{
this->Value = new T;
return;
}
private:
T* Value;
};
class Test
{
public:
Test(int Arg)
{
this->Value = Arg;
}
private:
int Value;
};
int main()
{
MyArray<Test> a(0);
}
让它不报错且不更改Test类时,该怎样写?
用vector容器倒是不报错
vector<Test> a(0); template<typename T>
class MyArray
{
public:
MyArray(const size_t& Length)
{
this->Value = new T*;
return;
}
void push(const T& obj) {
T* pNOBJ = new T(obj);
Value = pNOBJ;
}
void pop() {
if(s > 0)
s--;
}
T& top() {
return *Value;
}
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 AmIzero 发表于 2020-4-28 16:23
template
class MyArray
{
额,好像vector也不能这样写,解决了,谢谢 AmIzero 发表于 2020-4-28 16:23
template
class MyArray
{
再问个问题,MyArray<int> a = { 1,2,3,4 };
这样的构造函数该怎样写? Pammer 发表于 2020-4-28 16:33
再问个问题,MyArray a = { 1,2,3,4 };
这样的构造函数该怎样写?
这个问题有点复杂 需要用到 initializer_list
你可以去看看std的vector是怎么实现的
AmIzero 发表于 2020-4-28 16:39
这个问题有点复杂 需要用到 initializer_list
你可以去看看std的vector是怎么实现的
虽然看不懂STL里边的vector(一堆define,还有下划线),但还是谢谢你
页:
[1]