我试图创建一个程序来帮助我更好地理解堆栈,并且在尝试将模板实现到头文件中时遇到了此错误。这是说一堆未声明的标识符错误,以及试图在main.cpp中创建新对象时出现意外的char。
我已经尝试过确保头文件正常工作,因此,一个空白的main.cpp并仅包含头文件,并且它会像这样进行编译,但是当我尝试从头文件类创建新对象时,我得到了错误。我花了一些时间在网上寻找相似的东西,但是他们似乎都对自己的问题很明确,这对我的帮助不大。
//这是我的头文件的一部分:
#ifndef STACKASLLIST_H
#define STACKASLLIST_H
using namespace std;
template<typename T> class StackAsLList
{
private:
struct StackNode
{
T ch;
StackNode<T> *next;
};
StackNode<T> *top;
public:
StackAsLList();
void ClearStack(); /// Remove all items from the stack
void Push(T ch); /// Push an item onto the stack
T Pop(); /// Pop an item from the stack
bool isEmpty(); /// Return true if stack is empty
bool isFull(); /// Return true if stack is full
~StackAsLList() /// Class destructor
{
ClearStack();
}
};
//这是我的main.cpp,我在其中尝试实现头文件:
#include "StackAsLList.h"
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
//this is the line where I start getting errors
StackAsLList<char>*theStack = new <char>StackAsLList();
}
我希望能够运行该程序并使用我在该类中创建的功能,但是我继续收到未声明的标识符错误。任何帮助将不胜感激!
答案 0 :(得分:0)
更改
#include "pch.h"
#include "StackAsLList.h"
到
// compiles
let myVar: string | number;
myVar = '5';
console.log(myVar.length);
// compiles
let myObj1: {myProp: string | number} = {myProp: 5};
myObj1.myProp = '5';
console.log(myObj1.myProp.length);
// does not compile, emitting the following error:
// TSError: ⨯ Unable to compile TypeScript:
// myt.ts(63,26): error TS2339: Property 'length' does not exist on type 'string | number'.
// Property 'length' does not exist on type 'number'.
let myObj2: {myProp: string | number} = {myProp: 5};
myObj2 = {myProp: '5'};
console.log(myObj2.myProp.length);