- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
<分区>
我目前正在编写一个表达式求值器,遇到了一个关于多态性的问题。我的类层次结构如下: Divide 继承自 Operator,Operator 继承自基类 Expression。当我使用基类 Expression 实例化类型为 Divide 的对象并尝试访问函数 divide(int, int) 时,出现以下错误:
"Expression.cpp: 在成员函数‘int Expression::evaluate()’中:Expression.cpp:37:6: 错误:‘class Expression’ 没有名为‘divide’ 的成员”
这里是“Expression.h”
#ifndef EXPRESSION_H
#define EXPRESSION_H
#include <string>
using namespace std;
class Operator;
class Divide;
class Expression
{
protected:
char **ana, *exp;
public:
Expression();
~Expression();
Expression(char* ex);
int evaluate();
void tokenize();
class EmptyException
{
public:
EmptyException(string a){reason = a;};
string getReason() const{return reason;};
private:
string reason;
};
};
#endif
这里是“Expression.cpp”
#include "Expression.h"
#include "Stack.h"
#include "Queue.h"
#include "Node.h"
#include <iostream>
#include <cstring>
#include <stdio.h>
#include <ctype.h>
#include "Operator.h"
#include "Divide.h"
Expression::Expression()
{
}
Expression::~Expression()
{
delete [] exp;
}
Expression::Expression(char* ex)
{
exp = ex;
//tokenize();
}
int Expression::evaluate()
{
Stack stack;
Expression *tmp;
Divide d;
tmp = &d;
tmp->divide(4, 2);
stack.push(tmp);
tmp = stack.pop();
}
void Expression::tokenize()
{
int space = 0;
for(int i =0 ; i < strlen(exp); i++)
{
if(exp[i] == ' ')
space++;
}
char ** ana = new char*[space + 1];
ana[0] = strtok(exp, " ");
for(int i = 1 ; i < space + 1; i++)
{
ana[i]= strtok (NULL, " ");
}
}
现在是“operator.h”
#ifndef OPERATOR_H
#define OPERATOR_H
#include "Expression.h"
using namespace std;
class Operator : public Expression
{
protected:
bool unary, binary;
public:
Operator();
bool isUnary() const;
bool isBinary() const;
};
#endif
"运算符.cpp"
#include "Operator.h"
#include <string>
#include <cmath>
#include "Expression.h"
Operator::Operator()
{
}
bool Operator::isUnary() const
{
if(unary)
return true;
else
return false;
}
bool Operator::isBinary() const
{
if(binary)
return true;
else
return false;
}
“除法.h”
#ifndef DIVIDE_H
#define DIVIDE_H
#include <string>
#include "Operator.h"
class Expression;
using namespace std;
class Divide : public Operator
{
private:
char id;
public:
Divide();
Divide(char);
int divide(int a, int b);
char identity() const;
};
#endif
“分割.cpp”
#include "Divide.h"
int Divide::divide(int a, int b)
{
return a/b;
}
Divide::Divide(char _id)
{
id = _id;
}
char Divide::identity() const
{
return id;
}
万一生成文件
main: Expression.o Equation.o Operator.o Divide.o Stack.o Queue.o main.o
g++ -static main.o Equation.o Expression.o Operator.o Divide.o Stack.o Queue.o -o main
main.o : main.cpp
g++ -c main.cpp
Equation.o : Equation.cpp Equation.h
g++ -c Equation.cpp
Expression.o : Expression.cpp Expression.h
g++ -c Expression.cpp
Operator.o : Operator.cpp Operator.h Expression.h
g++ -c Operator.cpp
Divide.o : Divide.cpp Divide.h Operator.h
g++ -c Divide.cpp
Stack.o : Stack.cpp Stack.h Node.h
g++ -c Stack.cpp
Queue.o : Queue.cpp Queue.h Node.h
g++ -c Queue.cpp
我省略了所有其他运算符,例如 eg.加号、减号等,因为它们都与 Divide 相同,只会使这个问题进一步复杂化。
我们有一个包含重复用户记录的数据库,我需要根据几个因素选择“最佳”用户: 应先选择具有成员(member)资格的用户,然后再选择没有成员(member)资格的用户 成员(member)有级别,在所有条
不知道为什么 Visual Studio 发出此警告: Access of shared member, constant member, enum member or nested type thr
我有一个数据库设置来注册网站的成员(member)专用区域的成员(member)。我可以使用复选框回显所有注册成员,以便我可以选择从管理页面删除单个成员,但我似乎无法弄清楚如何在单击提交按钮时选择删除
假定前缀一元运算符可以“由不带参数的非静态成员函数或带一个参数的非成员函数实现”(§13.5.1[over.unary]/1),除了适用于任何成员/非成员函数选择的通常封装/代码重用设计原理之外,还有
拥有 struct Person { string name; }; Person* p = ... 假设没有运算符被重载。 哪个更有效(如果有的话)? (*p).name 对比 p->name
进程文件: members-area or members-area.exe 进程名称: 5-1-61-96 进程类别:存在安全风险的进程 英文描述: 
引用资料 http://msdn.microsoft.com/en-us/library/6tc47t75%28v=VS.80%29.aspx http://msdn.microsoft.com/en
这个问题在这里已经有了答案: Is there any reason to use this-> (16 个答案) 关闭 7 年前。 这有什么区别: int MyClass::getId() {
我正在制作一个网站,您需要在其中注册,然后创建一个角色来玩。我如何将注册页面中使用的表格与玩家的表格结合起来,以便玩家始终获得他创建的角色。 我有一个表members,用于存储注册用户以及角色的 ta
我处于困境中,我被委托(delegate)创建一个 PHP Web 应用程序,该应用程序允许一个人注册,然后该用户可以再注册 5 个其他用户,他注册的其他用户也可以每个注册 5 个成员。 我希望创建数
我试图在成员(member)页面上显示一个非常简单的用户名。我已经在 stackoverflow 上搜索过,但使用我发现的内容不起作用。 我使用 HTML 表单指南中非常常见的注册/登录脚本,该脚本使
我正在使用CodeIgniter,我的问题是关于MySQL查询。我有两个表,分别是成员和关系。 成员表 我正在做的是,根据member_type将所有用户添加到成员表中。如果 member_type
我有一个表,用于存储 2 个成员(成员 A 和成员 B)之间的聊天信息。现在,当成员 A 删除他的消息时,我会抛出这样的 sql 请求 $deleting = mysqli_query($connec
from bs4 import BeautifulSoup import requests r = requests.get('http://medicalassociation.in/doctor-
我有两个我无法修改的类,它们都具有完全相同的成员: class Pose1 { public: double x,y; }; class Pose2 { public: d
我正在测试服务器上运行机器人。当前 channel 中有 3 个成员(member_count of 3),但它只返回一个成员。该成员是机器人。 代码: import discord from dis
我有一个对象,我们称之为 o,以及对 o 的引用。 在o范围内,我设置了一个成员,我们称之为m。 所以在 o 中,我调用: o.m = "blah" 在 o 之外,我访问 m: console.log
我正在尝试实现自定义成员(member)资格提供程序并希望更改 GetUser 方法。问题是 GetUser 返回 MembershipUser,而我想返回 MyMembershipUser,它有两个
我的网站有一个推荐给 friend 的按钮。为了鼓励人们使用此功能,我想用积分奖励那些使用它的人(积分将兑换奖品......还不知道)。 好的,所以我有这样的结构: 表单.php 您可以在此处输入 f
我在 MySQL 中有三个表, 组(键:group_id) 成员(键:member_id) group_member_relations 键:group_id, member_id 最后一个表包含 m
我是一名优秀的程序员,十分优秀!