我试图找出上面的错误,但无济于事。每次编译时,我都会收到错误消息:
/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);
我已经验证我在源文件中包括了正确的头文件,以便编译器可以识别该文件。以下是有关错误的代码
Parser.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;
}
我注意到的另一件事是,如果我将String更改为Text,则代码将完全编译。不知道为什么,但是名称String是否会与std :: string类冲突?
克里斯说“不,它与您的其他字符串标识符冲突”的意思是,您的“类字符串”与“枚举ValueType {对象= 0,数组= 1,字符串= 2,数字= 3,True = 4,False = 5,Null = 6};“,因此编译器会看到
Value* val = new String(name);
是
Value* val = new 2(name);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句