class SymbolNode {
public:
string name;
Type type;
int offset;
SymbolNode(string name_, Type type_, int offset_): name(name_), type(type_), offset(offset_) {
}
};
class FuncNode : public SymbolNode {
public:
Type returnType;
vector<Type> entries;
FuncNode(string name_, Type type_, int offset_,Type returnType,vector<Type> entries):
SymbolNode(name_,type_,offset_) ,returnType(returnType),entries(entries) {}
};
所以我有一个继承了基类SymbolNode的FuncNode类。当我试图访问 乐趣 我不能访问所有的人。我想添加 乐趣 向量 符号. 但也有能力访问所有的元素。
std::shared_ptr<SymbolNode> func= make_shared<FuncNode>("inc",FUNC,1,INT,entries);
vector<std::shared_ptr<SymbolNode>> Symbols;
试试 动态cast 或 static_cast
std::shared_ptr<SymbolNode> func= make_shared<FuncNode>("inc",FUNC,1,INT,entries);
在上行。func
是一个指向基类的(共享)指针。 因此,它不知道它的派生类型是什么this。 因此,它不能访问成员的 FuncNode
你可以这样表达。
std::shared_ptr<FuncNode> func= make_shared<FuncNode>("inc",FUNC,1,INT,entries);
或者这样做。
std::shared_ptr<SymbolNode> symnode = make_shared<FuncNode>("inc",FUNC,1,INT,entries);
std::shared_ptr<FuncNode> func = static_pointer_cast<FuncNode>(symnode);