我的任务是创建一个实现安全可调整大小数组的类,它可以 包含任何单一类型的数据。
使用模板,以便存储在数组中的数据可以是任何类型。
提供将数组设置为的“default”(无参数)构造函数 一些合理的默认初始大小。
为另一个构造函数提供一个允许的int参数 程序员指定原始大小。
template<typename stuff> //my template
class safearray
{
public:
int size;
stuff*data[size];
safearray def_size() // default size constructor
{int size = 0; return size;}
safearray new_size(new_int)
{delete [] data;
data = new int [newsize];
size = newsize; }
大多数情况下,我想知道我是否在正确的轨道上,我是编程的新手,所以我不确定所有语法是否正确。任何帮助都是apreciated
答案 0 :(得分:3)
嗯,首先,使用正确的命名和一些约定可能是个好主意:
stuff
模板参数并没有真正告诉用户它在做什么。考虑使用Element
或TElement
之类的内容。如果您没有创造性的情绪,请T
。safearray
不太清晰,考虑使用可以帮助读者区分单词的内容,例如safe_array
,SafeArray
然后,做一些缩进会很好。你可以做到
void SomeMethod() {
// code here
}
或
void SomeMethod()
{
// code here
}
接下来,你对什么是构造函数的想法是错误的。基本思想是构造函数是一个没有返回类型且与包含类同名的方法,例如。
class SomeClass
{
private: // private marks the internal state of the class
// it is inaccessible from the outside of the class
int someValue;
// it might be a good idea to store the size of the array here
// so the user cannot modify the size
public:
SomeClass()
{
someValue = 0;
}
SomeClass(int value)
{
someValue = value;
}
};
然后你显然使用类型:
来调用构造函数void SomeMethod()
{
SomeClass cl1; // creates an instance of SomeClass on stack calling the
// parameter-less constructor
SomeClass cl2(7); // creates an instance of SomeClass on stack with
// the parametrized constructor
SomeClass* cl3 = new SomeClass(12); // creates an instance of SomeClass on heap
// with the parametrized constructor
delete cl3; // remember to delete everything that has been created with new
}
如果你需要创建某个数组,你可以
size_t size = 6; // your required size comes here, e.g. constructor parameter
int* array = new int[size];
有了模板参数T,你显然需要做
T* array = new T[size];
所以这对于这些东西来说真的是一个快速而不是非常精确的演练。如果我是你,我会在评论中采用推荐的书籍,并从头开始学习。这种级别的任务对你的技能水平来说是疯狂的,并且不会让你对编程或C ++有更深入的理解。
PS。我是学生:)