gpt4 book ai didi

c++ - 如何用模板类型初始化成员变量数组?

转载 作者:行者123 更新时间:2023-11-28 02:54:28 25 4
gpt4 key购买 nike

如何在我的构造函数 Stack() 中初始化模板类型 T 的数组 s?这可能是一个非常简单的问题,但我对 C++ 了解不多。编译时出现此错误(GNU GCC):

error: incompatible types in assignment of 'double*' to 'double [0]'

这就是我在 main.cpp 中初始化 Stack 对象的方式:

Stack<double> stack;

这是我的 Stack.h 文件(包括实现):

#pragma once
#include <iostream>

using namespace std;

template <class T>

class Stack
{
public:
Stack();

private:
T s[];
int N;
};

template <class T>

Stack<T>::Stack() {
s = new T[5];
}

最佳答案

改变

//...
private:
T s[];

//...
private:
T *s;

这个声明

private:
T s[];

不符合 C++。数组的大小应为常量表达式。此外,您声明了一个数组,但在构造函数中将其用作指针

s = new T[5];

或者使用std::vector代替手动分配的数组。

关于c++ - 如何用模板类型初始化成员变量数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22310926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com