visual c++ 6.0_visual c++一个很小的问题?
我有以下一个visual c++程序:
#include <iostream>#include <string>#include <functional> #include "vector"#include "list"#include "set"#include "algorithm"using namespace std;template <typename T>class person{ public: person() { } void operator()(T &t) { cout<<t<<endl; }};void main(){ int a=10; string b="I am a china people!"; person<int> p1; p1(a); person<string> p2; p2(b);}
输出结果是:
10
I am a china people!
这是我想要的输出结果,便我并不是那么满意!因为这两个输出变量分别在两个不同的变量输出,我想要的结果是这两个输出变量放在同一个变量 person中输出,即我的要求是同一个变量 person那个同时存放不同类型的变量,各位高手请说出有什么办法可以实现我的要求?
最佳答案
如你这样简单的要求,可以不用模板的(当然,这是最简单的一个例子)
class person
{
public:
person(int t1,string t2)
{
cout<< t1 <<endl<<t2<<endl;
}
};
int main()
{
int a=10;
string b="I am a china people!";
person p1(a,b);
}
你上面的程序都没有涉及存放,只是输出存放的话,class本身可以存放多种类型的
追问:
假如我想的是p1同时存放int a和string b 追答:
我上面的不就是p1同时输出了int a和string b若是要存放,你只要在类中定义内部的两个变量,在构造时将a,b存入(上面的p1就是一个变量)你既然都能用模板了,这个应该没有问题吧
追问:
假如数据是不断的变化,不管是数据的类型还是数量
那你可以用容器啊,如vector,map,list等但没有一个万能的容器的,语言只是适合实际编程需求,没有实际需求一般语言中不会有的
其他回答
其它网友回答:
你把 a 也转换成字符串。
其它网友回答:
然后和 b 合并成为一个长字符串。
其它网友回答:
这样就可以用一个 person 搞定。
其它网友回答:
追问:
但我想要的结果是a也是int,不要改成字符串
追答:
两个不同数据类型,用简单变量不可能存放在一起。 一定要放在一起的话,你可以考虑一下用结构体变量来做。