我有一个非常简单的演示程序,可以在Microsoft Visual C++上编译成功:
#include <cstdio>
#include <vector>
#include <string>
using namespace std;
class String
:public wstring
{
public:
String(void)
{
}
String(const String &other)
: wstring(other)
{
}
};
int main(void)
{
vector<const String> v;
v.push_back(String());
printf("Hello, World!");
return 0;
}
它创建了一组常量字符串向量。然而,在GNU C++ 4.8.2中,它给出了很多错误,试图表明创建常量String对象的向量是不可能的。当我用vector<String>
替换vector<const String>
时,它可以编译通过。
这样GNU C++的行为的原因是什么?
const T
不满足这一点。 - juanchopanza