数组全局范围的结构
Struct of array global scope
我需要一个 array[lenght] 的结构,以便我的所有方法(全局)都能看到。
我遇到的问题是结构需要在特定函数内以特定长度初始化。更准确地说,当调用 importantFunction() 时,必须使用 size 长度初始化结构,我需要所有其他 fcts 才能访问该结构。
这是我提供的解决方案。我不知道有任何其他方法可以使结构成为全局结构。
无法使用 hashMap 或向量 class。这个模板是我自己的矢量的一部分 class.
template<class A>
class Table {
public:
struct hash {
T value;
int key;
};
struct hash *hash1;
//struct hash hash1[size]; I could do but I dont have access to size from here.
private:
A *elements;
int size;
int capacity;
};
template<class A>
Table<A>::Table(const Table &otro) {
//function that will use the struct of array
}
template<class A>
void Table<A>::importantFunction() {
hash1 = malloc(size);
//struct hash hash1[size]; if I do this the scope of my struct hash1 is only whitin this function
}
如果不允许使用 std::vector
,那么您可以使用 new
和 delete
手动使用动态内存分配,或者更好的方法是使用 smart pointers。但是由于您不允许使用 std::vector
,我想您也不允许在您的项目中使用智能指针。
template<class A>
class Table {
public:
struct hash {
T value;
int key;
};
//--------vvvvvvvv-------------->a pointer to a hash object
hash *ptrArray = nullptr;
private:
A *elements;
int size;
int capacity;
};
//other member functions here
template<class A>
void Table<A>::importantFunction() {
//-------------vvvvvvvvvvvvvvvv-->assign to ptrArray the pointer returned from new hash[size]()
ptrArray = new hash[size]();
}
//don't forget to use delete[] in the destructor
我需要一个 array[lenght] 的结构,以便我的所有方法(全局)都能看到。
我遇到的问题是结构需要在特定函数内以特定长度初始化。更准确地说,当调用 importantFunction() 时,必须使用 size 长度初始化结构,我需要所有其他 fcts 才能访问该结构。
这是我提供的解决方案。我不知道有任何其他方法可以使结构成为全局结构。
无法使用 hashMap 或向量 class。这个模板是我自己的矢量的一部分 class.
template<class A>
class Table {
public:
struct hash {
T value;
int key;
};
struct hash *hash1;
//struct hash hash1[size]; I could do but I dont have access to size from here.
private:
A *elements;
int size;
int capacity;
};
template<class A>
Table<A>::Table(const Table &otro) {
//function that will use the struct of array
}
template<class A>
void Table<A>::importantFunction() {
hash1 = malloc(size);
//struct hash hash1[size]; if I do this the scope of my struct hash1 is only whitin this function
}
如果不允许使用 std::vector
,那么您可以使用 new
和 delete
手动使用动态内存分配,或者更好的方法是使用 smart pointers。但是由于您不允许使用 std::vector
,我想您也不允许在您的项目中使用智能指针。
template<class A>
class Table {
public:
struct hash {
T value;
int key;
};
//--------vvvvvvvv-------------->a pointer to a hash object
hash *ptrArray = nullptr;
private:
A *elements;
int size;
int capacity;
};
//other member functions here
template<class A>
void Table<A>::importantFunction() {
//-------------vvvvvvvvvvvvvvvv-->assign to ptrArray the pointer returned from new hash[size]()
ptrArray = new hash[size]();
}
//don't forget to use delete[] in the destructor