#include <iostream>
#include <string>
class c1
{
public:
static std::string m1;
static unsigned int m2;
};
//std::string c1::m1 = std::string;
unsigned int c1::m2 = 0;
void main()
{
c1 a;
//std::cout<<a.m1<<std::endl;
std::cout<<a.m2<<std::endl;
}
在此程序中启用两条带标记的行会导致第一行出错。
错误C2275:'std :: string':非法使用此类型作为表达式
我做错了什么?
答案 0 :(得分:4)
因为“std :: string”是一个类型,而不是一个值。这是一个可能使这一点更加明显的例子:
#include <iostream>
#include <string>
class c1
{
public:
static unsigned int m2;
};
unsigned int c1::m2 = int; // error: int is a type, not a value
void main()
{
c1 a;
std::cout<<a.m2<<std::endl;
}
答案 1 :(得分:3)
错误说明一切,您使用类型 std::string
作为值进行分配。
要解决此问题,您可以执行以下操作:
std::string c1::m1 = std::string();
^^
或只是
std::string c1::m1;
答案 2 :(得分:2)
std::string c1::m1 = std::string;
应该是
std::string c1::m1 = "";
答案 3 :(得分:1)
错误是由于在该行右侧使用std::string
- 您尝试将m1的值初始化为类型 std::string
。
您应该会发现像std::string c1::m1 = "Wee - a string!";
这样的行可以使用。