我对此进行了很多搜索。但可能是我的措辞不正确。
考虑,
Class A {};
Class B {
public:
A* getA();
void setA(A *aVarParam);
private:
A *aVar;
};
现在由于 aVar 是类 BI 的成员变量,因此希望确保只要类 B 的相应对象存在,它就保持活动状态。
所以我在这里看到的选项是,
- 制作 aVarParam 的深层副本并持有指向它的指针。
- 使用类似 Boost 共享指针的东西。
两者看起来要么工作量太大,要么语法丑陋。我在这里错过了什么吗?是否所有 C++ 程序都使用这两个选项之一?
更多解释:
好的,你们中的许多人都想看看我如何使用它的一个例子。实际上,我想要一个通用策略的答案。因此是原始示例。这是我尝试使用的示例:
#ifndef DBSCHEMA_H
#define DBSCHEMA_H
#include <string>
#include <vector>
#include "dbtable.h"
namespace models {
class DbSchema
{
public:
explicit DbSchema();
boost::shared_ptr<std::string> getSchemaName() const;
void setSchemaName(const boost::shared_ptr<std::string> schemaName);
std::vector<models::DbTable> getTableList() const;
void setTableList(const std::vector<models::DbTable> tableList);
private:
boost::shared_ptr<std::string> schemaName_;
std::vector<models::DbTable> tableList_;
};
}
#endif // DBSCHEMA_H
在这里,类 DbSchema 被用作一个瘦模型,它将指导 UI(一个 QT 应用程序)。并且将有许多 Schema Builders 将实际与不同的数据库进行通信以填充 UI 将使用的 DBSchema 对象。
我希望这能澄清我想要实现的目标。我不是 C++ 程序员。在对 Java、Objective-C、PHP 和 JavaScript 编程多年之后,我试图满足编写“真正的 C++”应用程序的渴望。