数组全局范围的结构

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,那么您可以使用 newdelete 手动使用动态内存分配,或者更好的方法是使用 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