两个类,其中一个类具有指向另一个类的指针

时间:2018-04-24 03:50:45

标签: c++ class object-oriented-analysis

(C ++)假设我有两个类A和B.B类有一个指向A类的指针和一个方法。我究竟如何解释在这种情况下发生了什么。当调用该方法时,它可以访问A类中的方法,因为它指向A的可能实例

Class A {
public:
void method1() const;
void method2() const;
}
Class B {
public:
A* method3(int);
void method4();
void method5();
}

如果我在这里含糊不清或需要提供更多信息,请告诉我

编辑1:因此,基本上,B类创建的对象存储在可由整数键访问的地图中。 A类具有可以操纵任何一个单独对象的方法。所以我想在这种情况下,method3()会将地图的键作为输入,然后从地图中获取该对象,然后用户可以选择从A类中执行method1或method2来操作它。 即,存储在地图中的对象可以像游戏块一样,A类中的方法可以像翻转或旋转它一样。

2 个答案:

答案 0 :(得分:1)

你为什么不试试呢?

<form method="post" name="myform" action="checkboxes.asp">
    <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
        <thead>
            <tr>
                <th>No</th>
                <th>Reg Number</th>
                <th>Reg Date</th>
                <th>Reg Time</th>
                <th>Reg Status</th>
                <th><a href="javascript:;" id="Check_All" onClick="Check(document.myform.check_list); return false">
                        Approve All</a></th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>No</th>
                <th>Reg Number</th>
                <th>Reg Date</th>
                <th>Reg Time</th>
                <th>Reg Status</th>
                <th></th>
            </tr>
        </tfoot>
        <tbody>
            <?php
            include('server.php');

            $servername = "localhost";
            $username = "root";
            $password = "";
            $dbname = "registration";
            $status = "";

            try {
                $conn = mysqli_connect($servername, $username, $password, $dbname);
            } catch (Msqli_sql_Exception $ex) {
                echo("error in conection");
            }
            $query = "SELECT * FROM registrationstatus";
            $result = mysqli_query($conn, $query);
            if (!$result) {
                die('SQL Error: ' . mysqli_error($conn));
            }
            $no = 1;
            while ($row = mysqli_fetch_assoc($result)) {
                echo '<tr>
                      <td>' . $no . '</td>
                      <td>' . $row['regno'] . '</td>
                      <td>' . $row['date'] . '</td>
                      <td>' . $row['time'] . '</td>
                      <td>' . $row['status'] . '</td>
                      <td><button type="button" class="close" aria-label="Close" class="nav-link" data-toggle="modal" data-target="#cancelReg"><span aria-hidden="true">&times;</span></button>
                      <input type="checkbox" name="check_list" value="1">Approve<br>
                      </td>
                      </tr>';
                $no++;
            }
            ?>
        <script language="JavaScript">
            function Check(chk) {
                var checkedVal = document.getElementById("Check_All");
                if (checkedVal.innerHTML == "Approve All") {
                    for (i = 0; i < chk.length; i++)
                        chk[i].checked = true;
                    checkedVal.innerHTML = "UnApprove All";
                } else {
                    for (i = 0; i < chk.length; i++)
                        chk[i].checked = false;
                    checkedVal.innerHTML = "Approve All";
                }
            }
        </script>              
        </tbody>
    </table>
</div>
</div>
<div class="card-footer small text-muted"> <button type="submit" name="confirm" style="margin-left:80%;">
        approve</button></div>
</form>

只要A有一个默认构造函数,如果它们不存在,这应该在B的地图中创建新项目。

请注意,使A类method1和method2 const意味着它们不会改变A中的任何内容,因此它们不能是改变任何A状态的函数。

答案 1 :(得分:0)

成员函数A* method3(int)将返回指向类A的实例的指针。因此编译器将在堆上为它保留适当的内存量。很可能你需要在函数method3中动态创建该类的实例,并返回指向它的指针。