错误:“数字”之前的预期类型说明符

error: expected type-specifier before ‘Number’

本文关键字:类型 说明符 数字 错误      更新时间:2023-10-16

我试图找出上面的错误,但一无所获。 每次我编译器时都会收到错误:

/home/duncan/Desktop/OOPS/dac80/json/parser.cpp: In function ‘Value* parseString(std::stringstream&)’: /home/duncan/Desktop/OOPS/dac80/json/parser.cpp:149:19: error: expected type-specifier before ‘String’ Value* val = new String(name);

我已经验证了我在源文件中包含了正确的头文件,以便编译器识别该文件。 以下是有关错误的代码

解析器.cpp:

#include "object_model.h"
Value* parseString(std::stringstream& in)
{	
	std::string name("123");
	
	Value* val = new String(name);
	
	return val;
}

object_model.hpp:

#ifndef OBJECTMODEL_H
#define OBJECTMODEL_H
#include <string>
#include <sstream>
#include <map>
#include <vector>
enum ValueType { Object = 0, Array = 1, String = 2, Number = 3, True = 4, False = 5, Null = 6};
class Value
{
	public:
		Value() {}
		virtual ValueType getType() = 0;
};
class String : public Value
{
	public:
		String(std::string content);
		~String();
		
		std::string content;
		
		virtual ValueType getType();
};
#endif

object_model.cpp:

#include "object_model.h"
String::String(std::string content)
{
	this->content = content;
}
String::~String()
{
}
ValueType String::getType()
{
	return (ValueType)2;
}

我注意到的另一件事是,如果我将字符串更改为文本,那么代码就会完全编译。 不知道为什么,但字符串这个名字会与 std::string 类冲突吗?

当 Chris 说"不,它与您的其他字符串标识符冲突"时,您的"类字符串"与来自"枚举 ValueType { Object = 0, Array = 1, String = 2, Number = 3, True = 4, False = 5, Null = 6};"中的标识符"字符串"冲突,所以编译器看到的内容

Value* val = new String(name);

Value* val = new 2(name);