我收到未声明的标识符错误,但包含头文件吗?

时间:2019-10-06 23:16:28

标签: c++ visual-studio

我试图创建一个程序来帮助我更好地理解堆栈,并且在尝试将模板实现到头文件中时遇到了此错误。这是说一堆未声明的标识符错误,以及试图在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();
}

我希望能够运行该程序并使用我在该类中创建的功能,但是我继续收到未声明的标识符错误。任何帮助将不胜感激!

1 个答案:

答案 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);