【问题标题】:error C2679 template class错误 C2679 模板类
【发布时间】:2012-04-08 01:56:13
【问题描述】:

默认构造函数出现错误

错误: 错误 C2679:二进制“=”:未找到采用“int”类型右侧操作数的运算符(或没有可接受的转换)

代码:

#ifndef _SLOT_H
#define _SLOT_H
#include <string>
using namespace std;
template <class T>
class slot
{
private:
    string key;
    T data;
public:
    slot();
    slot(string str);
    slot(string str, T tempdata);
    slot(const slot &source);
    string getkey();
    T getdata();
    void setkey(string str);
    void setdata(T tempdata);
};

template<class T>
slot<T>::slot()
{
    key = "";
    data = NULL;
}

【问题讨论】:

  • 你是如何实例化模板的?

标签: c++


【解决方案1】:

问题可能是您正在使用类型 T 实例化模板,不允许将 int 分配给它。

【讨论】:

  • 一个更糟糕的结果是使用string 作为类型来实例化类。它会编译,但会抛出异常,因为字符串使用空字符串,而不是 0。
【解决方案2】:

我想我知道这个问题的解决方案。继续并将 main 放在头文件中。应该处理您遇到的所有指针问题

例如

获取 main 中的所有代码并将其放在文件标题“Main.h”中,通过 linux 注释 mount /dev/bin/boot 将其链接到其他文件。这将导致文件在启动时被链接。如果您有任何其他问题,请让我知道。此外,在您链接文件后,您可能需要重新启动它才能工作

编程愉快!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2015-08-05
    • 2012-10-04
    • 1970-01-01
    • 2019-01-24
    • 2012-11-11
    • 2021-08-06
    相关资源
    最近更新 更多