C++ 我收到一个未声明的标识符错误,但我已包含头文件?

C++ 我收到一个未声明的标识符错误,但我已包含头文件?,c++,visual-studio,C++,Visual Studio,我试图创建一个程序来帮助我更好地理解堆栈,我在尝试将模板实现到头文件时遇到了这个错误。这意味着在main.cpp中创建新对象时会出现一系列未声明的标识符错误以及意外的字符 我已经尝试过确保头文件正常工作,所以使用一个空白的main.cpp,只包含头文件,它会这样编译,但是当我尝试从头文件类创建一个新对象时,会出现错误。我花了一些时间在网上试图找到一些类似的东西,但它们似乎都非常具体的问题,这对我的帮助不大 //以下是我的头文件的一部分: #ifndef STACKASLLIST_H #defin

我试图创建一个程序来帮助我更好地理解堆栈,我在尝试将模板实现到头文件时遇到了这个错误。这意味着在main.cpp中创建新对象时会出现一系列未声明的标识符错误以及意外的字符

我已经尝试过确保头文件正常工作,所以使用一个空白的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();
    }
};
#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();
}
\ifndef STACKASLLIST\H
#定义STACKASLLIST_H
使用名称空间std;
模板类StackAsLList
{
私人:
结构堆栈节点
{
T-ch;
StackNode*next;
};
StackNode*顶部;
公众:
StackAsLList();
void ClearStack();///从堆栈中删除所有项
void Push(T ch);///将项目推到堆栈上
T Pop();///从堆栈中弹出一项
bool isEmpty();///如果堆栈为空,则返回true
bool isFull();///如果堆栈已满,则返回true
~StackAsLList()///类析构函数
{
ClearStack();
}
};
//下面是我尝试实现头文件的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();
    }
};
#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();
}
#包括“StackAsLList.h”
#包括“pch.h”
#包括
使用名称空间std;
int main()
{
//这是我开始出错的地方
StackAsLList*theStack=new StackAsLList();
}
我希望能够运行程序并使用我在类中创建的函数,但我不断收到未声明的标识符错误。任何帮助都将不胜感激

变化

#include "StackAsLList.h"
#include "pch.h"


编译器忽略
#include“pch.h”
上面的所有行,因此
#include“StackAsLList.h”
被忽略。这是一个关于预编译头如何在VisualStudio上工作的函数。颠倒这两行的顺序,它应该会工作。我想把它作为一个答案发布,但我确信这其中有重复的地方。@drescherjm我习惯于将Visual Studio预编译头命名为
stdafx.h
,因此我完全忽略了这个问题。因此,这实际上修复了问题的一部分,但我仍然在这行中遇到了一个问题:StackAsLList*theStack=new StackAsLList()@AdamCarter请就这个完全不同的问题问一个新的不同的问题。哦,对不起,我认为这是问题的一部分,我的错。@AdamCarter StackAsLList*theStack=new StackAsLList();在StackOverflow,提问的主要目的是帮助未来的读者解决同样的问题。如果你在同一个问题中问了多个问题,这对未来的读者来说并不是一个好问题。