当我尝试在联合定义中使用Cpp转发类声明时,我从VS Code中收到以下错误。
variable "mate::Data" is not a type name
class std::vector<<error-type> *>
出问题了吗还是VS Code错误?
Cpp forward class declaration and union - VS Code error
class Data;
enum DataType
{
DATA_UNIT_TYPE_BOOLEAN,
DATA_UNIT_TYPE_NUMBER,
DATA_UNIT_TYPE_NUMBER_POSITIVE_INFINITY,
DATA_UNIT_TYPE_NUMBER_NEGATIVE_INFINITY,
DATA_UNIT_TYPE_STRING,
DATA_UNIT_TYPE_OBJECT,
DATA_UNIT_TYPE_ARRAY,
DATA_UNIT_TYPE_NULL,
};
union DataUnion {
bool boolValue;
double numberValue;
std::string* stringValue;
std::vector<Data*>* arrayValue; // <- error here
std::map<std::string, Data*>* objectValue; // <- and there
};
class Data
{
private:
DataType type;
DataUnion value;
bool hasNullValue;
public:
~Data();
Data(DataType t);
Data(DataType t, DataUnion v);
};
答案 0 :(得分:0)
我cannot reproduce your error,但您从未定义DataType
。跟随Clang的输出here:
main.cpp:18:5: error: unknown type name 'DataType'
DataType type;
^
main.cpp:23:10: error: unknown type name 'DataType'
Data(DataType t);
^
main.cpp:24:10: error: unknown type name 'DataType'
Data(DataType t, DataUnion v);
^
3 errors generated.
提供一个定义,您应该会很好。这似乎与您拥有的DataUnion无关。