为什么它不编译,而是在cpp.sh上编译

时间:2016-10-15 19:03:14

标签: c++ qt

我有QT:

Qt Creator 4.1.0 基于Qt 5.7.0(MSVC 2013,32位)

建于2016年8月24日14:56:50

下一个代码:

#include <iostream>
using namespace std;
[enter image description here][1]
// универсальный полиморфизм (шаблон)
template <typename T>
class value {
public:
    T val;
};

// динамический полиморфизм

class var {
public:
    virtual char type(){return 'U';}
};

class Int:public var {
public:
    char type(){return 'I';}
};

class String:public var {
public:
    char type(){return 'S';}
};

class Float:public var {
public:
    char type(){return 'F';}
};

class M:public var{};


std::string gettype(var* opt){
    if (opt->type() == 'U'){
        return "unknown";
    } else if (opt->type() == 'I') {
        return "int";
    } else if (opt->type() == 'S'){
        return "string";
    } else if (opt->type() == 'F'){
        return "float";
    }
}

int main(int argc, char *argv[]){

    // универсальный полиморфизм
    value<int> n;
    n.val = 5;

    value<string> s;
    s.val = "text";

    cout << n.val << endl;
    cout << s.val << endl;

    // динамический полиморфизм
    var* a = new Int();
    var* b = new String();
    var* c = new Float();
    var* x = new M();

    cout << gettype(a) << endl;



    return 0;
}

它在cpp.sh上运行良好,但在胜利8.1的QT中不起作用。

“二进制”&lt;&lt; “:无法找到运算符,采用右操作数类型”std :: string“(或无法接受的转换)”

1 个答案:

答案 0 :(得分:0)

你可能需要使用:

包含string.h
#include <string>

然后我会删除该行[enter image description here][1],我不知道它的作用,而且它不是C ++代码。

让我知道它是否有效。