小编Tal*_*389的帖子

C++:关联,聚合和组合

我开始研究OOAD,我很难找到一个C++即会说明如何代码示例Association,AggregationComposition通过编程来实现.(到处都有几个帖子,但它们与C#或java有关).我确实找到了一两个例子,但它们都与我的导师的指示相冲突,我很困惑.

我的理解是:

  • 关联: Foo有一个指向Bar对象的指针作为数据成员
  • 聚合: Foo有一个指向Bar对象的指针,Bar的数据被深度复制到该指针中.
  • 组成: Foo有一个Bar对象作为数据成员.

这就是我实现它的方式:

//ASSOCIATION
class Bar
{
    Baz baz;
};
class Foo
{
    Bar* bar;
    void setBar(Bar* _bar)
    {
        bar=_bar;
    }
};

//AGGREGATION
class Bar
{
    Baz baz;
};
class Foo
{
    Bar* bar;
    void setBar(Bar* _bar)
    {
        bar = new Bar;
        bar->baz=_bar->baz;
    }
};


//COMPOSTION
class Bar
{
    Baz baz;
};
class Foo
{
    Bar bar;
    Foo(Baz baz)
    {
        bar.baz=baz;
    }
};
Run Code Online (Sandbox Code Playgroud)

它是否正确?如果没有,那么应该怎么做呢?如果您还给我一本书中的代码参考(以便我可以与我的导师讨论),我们将不胜感激.

c++ oop ooad associations aggregation

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

PHP mysqli 为不带参数的存储过程准备语句

我有一个存储过程 IsUserPresent 例如:

DELIMITER $$
CREATE PROCEDURE IsUserPresent(
    in userid varchar (150),
    out isPresent bit
)
BEGIN
    SET isPresent=0;
    SELECT COUNT(*)
    INTO isPresent
    FROM users_table
    WHERE users_table.userid=userid;
END$$
Run Code Online (Sandbox Code Playgroud)

我想使用 mysqli 准备好的语句从 PHP 调用它。我正在按照代码片段执行此操作,但它给了我警告。

$connect=&ConnectDB();
$stmt=$connect->prepare("CALL IsUserPresent(?,?)");
$stmt->bind_param('si',$uid,$userCount);
$stmt->execute();
$toRet = $userCount!=0;
Disconnect($connect);
return $toRet;
Run Code Online (Sandbox Code Playgroud)

警告如下:

Premature end of data (mysqlnd_wireprotocol.c:1112)
Warning: mysqli_stmt::execute(): RSET_HEADER packet 1 bytes shorter than expected
Warning: mysqli_stmt::execute(): Error reading result set's header
Run Code Online (Sandbox Code Playgroud)

php mysql mysqli stored-procedures prepared-statement

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