我有一个名为<?php
include 'connectionfile.php' ;
error_reporting(E_ALL);
ini_set('display_errors', '1');
if (isset($_POST['endings']) {
$ref= mysql_real_escape_string($_POST['ref']);
$titl= mysql_real_escape_string($_POST['titles']);
$kind= mysql_real_escape_string($_POST['kindy']);
$subjec= mysql_real_escape_string($_POST['subjects']);
$caus= mysql_real_escape_string($_POST['causes']);
$solutio= mysql_real_escape_string($_POST['solutions']);
$penalt= mysql_real_escape_string($_POST['penaltys']);
$not= mysql_real_escape_string($_POST['notes']);
$endin= mysql_real_escape_string($_POST['endings']);
session_start(); //You don't need to start session, don't see any reason
$sql = "UPDATE report SET title = '$titl', type = '$kind', subject = '$subjec', cause = '$caus', solution = '$solutio', penalty = '$penalt' , note = '$not', ending = '$endin' WHERE reference = '$ref'";
$result = mysqli_query($con, $sql) or die(mysql_error());
}
?>
的小组:
Group
我指向存储在这些容器中的多个组:
class Group
{
int id;
string addr;
set<int> members;
...
};
我正在存储指针:
vector<Group*> grpVec
map<int, Group*> grpIdMap
map<string, Group*> grpAdMap
现在,我想更新一个组对象。如果我只更新grpIdMap容器中的指针,那么所有其他容器中的同一对象指针是否会更新?
//create and populate group object pointer Group *grp
grpVec.push_back(grp)
grpIdMap.insert(std::pair<int,Group*>(grp->id, grp))
grpAdMap.insert(std::pair<string,Group*>(grp->addr, grp))
这种方法有什么问题吗?
答案 0 :(得分:2)
如果指针都指向同一个对象,则可以使用任何指针来更改该对象。
让我们稍微看一下&#34;图形&#34;:
+-------------------+ | pointer in vector | -----\ +-------------------+ \ \ +--------------------+ \ +---------------+ | pointer in one map | -------->--- | actual object | +--------------------+ / +---------------+ / +----------------------+ / | pointer in other map | --/ +----------------------+
答案 1 :(得分:1)
此方法将更新对象。如果有任何指向此对象的指针(不是它的副本),那么它们将获得更新信息。
我建议您停止使用原始指针,并在此处阅读如何使用智能指针:Which kind of pointer do I use when?
我认为你应该看一下这个:http://en.cppreference.com/w/cpp/memory/shared_ptr
P.S。在类中使用封装。其他对象不应该知道数据如何存储在您的类中,只需提供接口。
P.P.S。如果您希望所有成员都公开,可能您想使用struct
而不是class
答案 2 :(得分:0)
它正在改变指针指向的对象的值,而不是指针值。所以只要所有指针指向同一个对象,它就会起作用