作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在我的构造函数 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/
我是一名优秀的程序员,十分优秀!