我有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“(或无法接受的转换)”
答案 0 :(得分:0)
你可能需要使用:
包含string.h#include <string>
然后我会删除该行[enter image description here][1]
,我不知道它的作用,而且它不是C ++代码。
让我知道它是否有效。