如何定义一个类 编译时,使得第一行报错,第二行正确

如何定义一个类A

int main(){
A a; //第一行
A *b=new A(); //第二行
}

如何定义一个类 编译时,使得第一行报错,第二行正确

[quote java]#include "stdio.h"
class test
{
public:
static test* getinstance()
{
return(new test());
}
int puthello()
{
puts("hello world");
return 0;
}
private:
test()
{}
};

int main(void)
{
//test a; 编译不通过
//test *a = new test(); 编译不通过
test *a = test::getinstance();
a->puthello();
return 0;
}[/quote]

可以将构造函数定义为私有,然后利用单例的方式来获取实例,这样第一行应该会报错。

你的这个需求感觉有点怪,呵呵!!
A a; A *b=new A(); 是一样的呀!!都是实例化对象

不知道是不是这有这种需求 :wink:

:cry:

程序1:
int main()
{
A a;
return 0;
}
程序2:
int main()
{
A *b=new A();
return 0;
}
如何定义类A,使得程序1编译错误,程序2编译正确,且运行正确?