c++ - 模板类和主要

标签 c++ class templates arguments program-entry-point

我有以下类设置,尝试模仿一个非常基本的堆栈。

template <class T>
class Stack{
    public:
        static const unsigned MAX_STACK_DEPTH =4;
        Stack();
        unsigned elements() const;
        Stack<T> & push(T &value);
        T pop();
        Stack<T> & show();
    private:
        unsigned element;
        T stack[MAX_STACK_DEPTH];
};

template <class T>
Stack<T>::Stack(){
    element=0;
}
/*Other class function definitions*/

我的问题是我在 main 中遇到以下错误

1   IntelliSense: no instance of function template "calc" matches the argument list c:\users\nima\documents\visual studio 2010\projects\calcu\calcu\policalc.cpp    109 6   Calcu

这是我的主要内容

int main(){
    bool run=true;
    while(run){
        if(calc(input()));
    }
}

这是另外两个函数声明

string input();
template <class T>
bool calc(string line);

这是我的计算函数,还没有完成。

template <class T>
bool calc(string line){
    static T Ans;
    istringstream sin(line);
    Stack stack;
    for(string token; sin>>token){
        T t;
        if(parse(t, token)){
            push(t);
        }else{
            if(token==operators[i]){
                switch(i){
                case 1:{

                       }
                }
            }
        }
    }
}

最佳答案

您的 calc 函数是一个带有参数 T 的函数模板,但该参数未被任何函数参数使用——唯一的参数定义为 string,不管 T 是什么类型。

因此,当您像这样调用 calc 时,编译器无法延迟 T:

calc(input())

您需要明确指定T,例如:

calc<int>(input())

(当然,您应该使用任何有意义的数据类型,而不是 int。)

关于c++ - 模板类和主要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12812840/

相关文章:

jQuery 复选框类属性

c++ - std::function 是否支持完美转发?

c++ - 查看函数模板实例化

c++ - 'auto' 关键字如何知道何时使用 const_iterator 匹配函数重载?

c++ - gethostbyaddr() 函数是否使用互联网将 IP 地址转换为主机名?

java - 是否可以在没有条件语句的情况下创建具有相同父类的随机对象?

c# - EntityFramework 存储库模板 - 如何在模板类中编写 GetByID lambda?

c++ - 我有一个 .csv 文件,想将其转换为 C++ 中的数组

c++ - Qt QVBoxLayout : How to divide the layout in fixed height Boxes?

从不同文件导入类时,Python 3 是实例意外行为吗?