类型检查受保护的标记联合
Typechecking protected tagged union
我必须构建一个表达式树,我这样做如下。我有一个树,它的根类型为 TreeNode<Token>*
令牌和树节点如下所示:
struct Token {
enum{
PLUS, MINUS, NUMBER, VARIABLE, SIN, COS, POW, PRODUCT, DIVIDE, PI
} type;
union{
char variable;
double number;
};//union
};
template <class T>
class TreeNode{
public:
TreeNode();
~TreeNode();
TreeNode<T>* getLeft() const;
TreeNode<T>* getRight() const;
void setLeft(TreeNode<T>* node);
void setRight(TreeNode<T>* node);
void setInfo(T value);
T getInfo() const;
protected:
T info;
TreeNode<T> *left;
TreeNode<T> *right;
};
我的问题是我不知道访问令牌的类型,因为信息受到保护。我试过类似的东西
root->getInfo().number = cos(root->getRight()->getInfo().number);
(在这里我知道根有一个正确的孩子,它具有正确的类型等,所以这应该没问题(但这给我带来了以下错误:
error: using temporary as lvalue [-fpermissive]
请帮忙!
TreeNode<T>::getInfo
的签名返回T
,这是一个临时的。您不想尝试分配给它,因为这将不起作用。
相反,请调用 TreeNode<T>::setInfo
将基础Token
替换为所需的基础。
相关文章:
- C++:无法访问声明的受保护成员
- 继承和友元函数,从基类访问受保护的成员
- 为什么派生类的好友不能使用受保护的成员?
- C++:为什么无法在派生类中访问受保护的构造函数?
- 公共/私有/受保护是否会更改内存中结构的排列?
- 在父类中公开受保护的构造函数
- 如何从其他结构访问受保护的结构变量
- 如何实现返回受保护结构的私有函数
- 相同的层次结构,访问基类的受保护成员时的行为不同
- 从模板化父类中的派生内部类访问受保护的成员变量
- 为什么继承的受保护构造函数不能公开?
- 在使用受保护和继承时无法访问在类中声明的私有成员
- C++中的受保护变量
- 在此上下文中受保护 c++
- 同一模板类但模板类型的受保护成员
- 基类中受保护的纯虚函数如何被基类的友元类使用?
- 受保护的嵌套结构不能用作派生外部类中的返回类型?
- 是否可以使用 static_cast 颠覆受保护成员访问检查?
- 正在检查是否存在可能受保护的C++成员函数
- 类型检查受保护的标记联合