#include <iostream>
using namespace std;
namespace util{
template<typename T>
class A{
public:
static void Print()
{
cout << "in 'Print' of A" << endl;
}
};
class B{
public:
static void Print()
{
cout << "in 'Print' of B" << endl;
}
};
}</p>namespace common{
template<>
void util::A<int>::Print()
{
cout << "in 'Print' of A<int>"<< endl;
};
typedef util::A<int> AX;
class BX:public util::B{
public:
static void Print()
{
cout << "in 'Print' of BX" << endl;
}
};
}
int main()
{
common::AX a;
a.Print();
common::BX b;
b.Print();
}
update:
发现区别还是蛮大的,因为不允许 static virtual 因此那个 Class 的做法几乎没有用处,因为在设想中构造函数需要调用一个成员函数,:( 另外类型太多了,要写的构造函数和要定义的数据成员都成问题,用模板就好得多。难道这
原来的问题是这样的,一个 Exception 类,要输出的字符串是两部分,一个是用户提供的字符串,一个是根据 ErrorCode 得到的常量字符串。CppSQLite3 里面的源码,我想照抄过来用,它在构造函数里把这两个字符串拼起来,输出的时候就简单
嗯,最后的解决办法,是把所有的 Exception 类放到同一个名字空间里。然后,还是用了模板类的办法。因为构造函数只能找到 virtual 但是找不到 abstract virtual。回去再看看 BS 著名的 23 章的名字推断部分。
今天找到一个软件,叫做 AudioTagEditor,功能很不错,需要近 30 美元注册费用,可以试用 30 天。主要功能。。。。开始我差点第一个删掉它,因为探测到的很多 Tag 是空的。后来才发现设置里面有“先探测空 Tag 然后探测 ID3v2 Tag”这一项,本来这个软件的功能就是填写空白,那么这样的设定也有情可原了。比较
update:
正在用 Minix, 有生以来头一次见识这个玩具。Minix 3 今天正式发布,Andy Tanenbaum 教授原来还是这么爱折腾。。。。看看 Linus 十年前和 A.Tanenbaum 的那场论战,看来真的要到几十年后才会结束了。
没有安装,是下载的 VMware 虚拟机。一个虚拟机文件只有 12M,启动速度只有两三秒,关机更快,DOS 时代的感觉啊。。。。现在的操作系统哪个不需要几十秒才能启动呢,像我们 fedora 一般都是 50~80s 的样子。唉!不过使用 VMware 来发布虚拟机的想法的确不错,因为主要目的是试用,而 VMware Player 也很小巧灵活,并且都是免费的东西~~ 要是 M$ 就不一样了。另外,也提供了 QEmu 相关的文件。QEmu 是可以直接使用 VMware 虚拟机的是吧?
期待可以用 VMware 跑一跑南京大学计算机系自主知识产权的 SoftOS 安全操作系统,或者后继的几个安全操作系统版本。太好玩了。当年在 Bash 老大那里看他的 UML 虚拟机,那么复杂的步骤,真是没想到现在有这么多可选的东西。