64,642
社区成员
发帖
与我相关
我的任务
分享
// 以string来说明:
// 此时,我只希望客户使用string来构建实例,
// 而不要使用basic_string<char, char_traits<char>, allocator<char> >来构建实例
// 因为在以后,basic_string<char, char_traits<char>, allocator<char> >可能弃用,
// 而重新 typedef otherclass string;
typedef basic_string<char, char_traits<char>, allocator<char> > string;
// 如何隐藏类,使用户不可直接用
// 方法1: 类构造私有,并friend另一指定类,指定类为本类的公有派生类
// 注意: 构造函数的继承
// 方法2: 类声明实现全放cpp, 另一指定类中含指定此类的指针(或对应空间),并对指定类的接口进行转发
// 注意: 指定类的构造函数的继承, copy构造与copy赋值的深度copy
// 方法3: 将类名称搞得又臭又长,然后 typedef 出一个简单名称
// 方法4: typedef 出指定名称。 紧接着: #define 类名 另一个又臭又长的字符串
// 注意:只是可用,实际不如上面一个
namespace yourspace
{
class A;
}
namespace myspace
{
typedef yourspace::A USA;
}
或者用类中类来转
// 呃,我指:
class A{};
typedef A USA;
//如何让客户只使用
USA a; //来创建实例
[/quote]
客户是谁?软件这东西,无论如何加密,理论上总能被破解的。如果客户水平比较低,你可以在typedef之后加句#define basic_string xxx
// 汗,
//而不能使用
A a; //来创建实例
// 呃,我指:
class A{};
typedef A USA;
//如何让客户只使用
USA a; //来创建实例