小编Som*_*per的帖子

C++继承 - 如何使用指向基类对象的指针访问子方法

我有一个处理继承的任务.

我有一个Employee()基类,Manager()和Intern()继承自.

我的导师给了我们以下指示:

在main()中声明一个staff指针数组并将它们初始化为以下记录:

Manager("IT", 100, "MF1", "ML1")
Manager("HR", 50, "MF2", "ML2")
Intern("SIUE", 0, "IF1", "IL1")
Intern("SLU", 0, "IF2", "IL2")
Run Code Online (Sandbox Code Playgroud)

然后我必须循环并显示数组.他提供的输出作为示例显示必须已调用Manager()和Intern()toString()方法,因为输出了与子类相关的特定信息.但是,在访问数组时,我得到的是员工指针,而不是指向孩子的指针.我附上了他提供的截图.

我的输出需要的屏幕截图

我不确定我应该怎么做到这一点.

这是我的员工阵列声明:

Employee * staff = new Employee[4];
Run Code Online (Sandbox Code Playgroud)

我不能存储指向我不认为的Manager()对象的指针.除非有某种程度上我可以扇着这个:

staff[0] = new Manager("IT", 100, "MF1", "ML1");
Run Code Online (Sandbox Code Playgroud)

看来我唯一的选择是做这样的事情(我怎么能在一行中做到这一点?):

Employee * e = new Manager("IT", 100, "MF1", "ML1");
staff[0] = *e;
Run Code Online (Sandbox Code Playgroud)

但显然现在当我这样做:

cout << staff[0].toString();
Run Code Online (Sandbox Code Playgroud)

我将获得基类Employee()toString()方法,而不是子类.

以下是Employee()和Manager()的以下两个类定义,以防它们相关:

class Employee{

private:
    int eid;
    string firstName;
    string lastName;

public:
    Employee();
    Employee(int eid, string fname, string lname);
    void setEID(int eid);
    void setFirstName(string fname);
    void …
Run Code Online (Sandbox Code Playgroud)

c++ arrays inheritance pointers

5
推荐指数
1
解决办法
6019
查看次数

Oracle,LEFT OUTER JOIN不返回左表中的所有行,而是表现得像INNER JOIN

我正在做一个左外连接,只返回匹配的行,就像它是一个内连接.

为简化数据,我的第一个表(ROW_SEG)或左表看起来像这样:

ASN | DEPT NO
-----------------------
85  | 836
86  | null         
87  | null  
Run Code Online (Sandbox Code Playgroud)

我的第二个表(RF_MERCHANT_ORG)有DEPT_NAME,还有其他一些东西,当我有一个dept号时我想得到它.

DEPT NO | DEPT_NAME
-----------------------
836     | some dept name 1
837     | some dept name 2
838     | some dept name 3
Run Code Online (Sandbox Code Playgroud)

在这种情况下,在我加入之后我只得到1排,因为ASN 85有DEPT NO.

...omitting a bunch of SQL for simplicity

, ROW_SEG AS (
    SELECT *
    FROM VE_SI_EC_OI
    WHERE ROW_NUM BETWEEN 1 AND 1000 -- screen pagination, hardcoding values
)

-- ROW_SEG has a count of 1000 now

, RFS_JOIN …
Run Code Online (Sandbox Code Playgroud)

sql oracle left-join

4
推荐指数
1
解决办法
3982
查看次数

JavaScript RegEx.test()有条件地中止/返回函数

我有一个简单的类项目,我正在进行一些表单验证.我们必须使用一些基本的正则表达式来验证输入.我在外部js文件中有这个代码.

我有一个捕获onsubmit事件的函数,并返回验证函数的值是否继续回发.

问题是当我调用RegEx.test()方法时,我的验证函数停止并返回,并且回发无意中进行.如果我使用"new RegEx()"创建一个正则表达式对象,同样的事情也会发生.我迷失了为什么.

这是我的代码:

$(document).ready(function() {

    // onsubmit event    
    $('form').submit(
        function() {
            return validation();
        }
        );

    // form validation
    function validation() {

        resetErrors();

        //variables
        var validates = true;
        var errorString = "";
        //var isEmail = new RegEx('^.+@.+\..+$'); // function stops here if line is uncommented and kicks off the postback?
        //alert("harro new regex?"); // does not run if above line is uncommented


        var isEmail = "/^.+@.+\..+$/"; // this doesn't stop the function
        alert("harro isEmail direct regex string assignment"); // …
Run Code Online (Sandbox Code Playgroud)

javascript regex forms submit

3
推荐指数
1
解决办法
1387
查看次数

PHP函数没有被调用,我错过了一些明显的东西吗?

我想我需要第二双眼睛.

我有一些调用php文件的ajax,它正在返回json.一切正常.然后我警告我返回的数据元素用于测试目的.在这样做,我缩小了我的功能是没有被调用.

<?php

// database functions
$response = array();
$count = 1;

// connect to db
function connect() {   
$response['alert'] = 'connect ran'; // does not get alerted
}

// loop through query string
foreach ($_POST as $key => $value) {

switch ($key) {
    case 'connect':
        $response['alert'] = 'case ran';
        if ($value == 'true') {
        $response['alert'] = 'if ran'; // this is what gets alerted, should be overwriten by 'connect ran'
            connect(); // function call does not work?
        } else …
Run Code Online (Sandbox Code Playgroud)

php ajax jquery function

2
推荐指数
1
解决办法
125
查看次数

将函数作为参数传递时,错误LNK2019"未解析的外部符号"

我试图在C++中将函数作为参数传递.我一直收到LNK2019未解决的外部符号错误.

我已经读过这些,并且已经修复了这些,但我无法弄清楚我在这里做错了什么.

main.ccp

我的显示函数中的TreeItemType引用似乎发生了错误.

include "PhoneBook.h"  
include "PhoneEntry.h"  
include "bst.h"   
using namespace std;  
using namespace p04NS;  

void display(TreeItemType& item);

int main() {

    PhoneEntry test = PhoneEntry("first", "last", "618-580-0680");
    bst * tree = new bst();

    TreeItemType foo = TreeItemType(); // test type reference, no error

    tree->insert(test);

    tree->inorder(display);

    system("pause");
    return 0;
}

void display(TreeItemType& item){
    cout << "hello worlds!";
}
Run Code Online (Sandbox Code Playgroud)

bst.h

TreeItemType typedef在此处定义.

namespace p04NS {

    typedef PhoneEntry TreeItemType;
    typedef string KeyType;

    // Pointer to a function that can be used to …
Run Code Online (Sandbox Code Playgroud)

c++ typedef function-pointers linker-errors

0
推荐指数
1
解决办法
1552
查看次数