这与类似的问题不同,因为我将指针值设置为地址,而不是尝试分配不兼容的类型......我想。
template <class Type>
class ArrayStack
{
private:
int sz; // stack size
int asz; // array size (implementation)
Type* start; // address of first element
Type arr[]; // Might need to intialize each element to 0!?
public:
ArrayStack() { sz = 0; arr[0] = 0; asz = 0; start = &arr; }
/* other code... */
};
答案 0 :(得分:0)
建议使用std::vector<Type> arr
代替Type arr[]
。
template <class Type>
class ArrayStack
{
private:
int sz; // stack size
int asz; // array size (implementation)
// Type* start; // address of first element
// Don't need this at all.
// You can use &arr[0] any time you need a pointer to the
// first element.
std::vector<Type> arr;
public:
// Simplified constructor.
ArrayStack() : sz(0), asz(0), arr(1, 0) {}
/* other code... */
};
答案 1 :(得分:0)
start = arr;
应该可以解决问题。
另外,一个空数组规范:
Type arr[];
不确定这意味着什么。可能与:
相同Type arr[0];
更常见的是:
Type arr[asz];
当然,数组大小需要是常量。