(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类中的方法可以像翻转或旋转它一样。
答案 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">×</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
中动态创建该类的实例,并返回指向它的指针。