搜索
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 谁知道在c++中怎么在模板中使用静态变量啊?
标题:
谁知道在c++中怎么在模板中使用静态变量啊?
取消只看楼主
玉琪龙
等 级:
新手上路
帖 子:41
专家分:0
注 册:2007-12-9
楼主
问题点数:0 回复次数:6
谁知道在c++中怎么在模板中使用静态变量啊?
在学到c++模板时,忽然想到静态变量,于是试一下,但是出不了结果,不知道使用时有什么规则?请哪位高手指教一下!!
谢谢~~~~~
搜索更多相关主题的帖子:
十分感激
2007-12-09 11:55
玉琪龙
等 级:
新手上路
帖 子:41
专家分:0
注 册:2007-12-9
第
2
楼
得分:0
具体点吧!大家看看这是怎么错的?
#include<iostream.h>
template <class T>
class Fun
{int l;T *p;
static T sum;
public:
Fun(int i=1)
{ l=i;
p=new T[i];
}
void input();
void output();
void sort();
void look(T);
void add()
{
for(int i=0;i<l;i++)
sum+=p[i];
}
~Fun(){delete [] p;}
};
T static::sum=0;
4template <class T>
void Fun<T>::input()
{ for(int i=0;i<l;i++)
{ cout<<"请输入第"<<i+1<<"个数据:";
cin>>p[i];
}
}
template <class T>
void Fun<T>::output()
{for(int i=0;i<l;i++)
cout<<p[i]<<' ';
}
template <class T>
void Fun<T>::sort()
{T tem;
for(int i=0;i<l-1;i++)
for(int j=i+1;j<l;j++)
if(p[i]>p[j])
{tem=p[i];
p[i]=p[j];
p[j]=tem;
}
}
template <class T>
void Fun<T>::look(T key)
{for(int i=0;i<l;i++)
if(p[i]!=key)continue;
else cout<<"您要的数据在第"<<i+1<<"个";
cout<<"抱歉~您要的数据没有查询到!请从新输入:";
}
void main()
{Fun<int> s(4);int key;
cout<<"请输入数据:";
cout<<endl;
s.input();cout<<endl;
cout<<"确认您的数据为:";
s.output();cout<<endl;
cout<<"对您的数据排序后结果:";
s.sort();
s.output();cout<<endl;
cout<<"请输入您要查询的数据:";
cin>>key;
s.look(key);
}
谢谢啊很多 麻烦大家啦
龙的图腾
2007-12-10 22:21
玉琪龙
等 级:
新手上路
帖 子:41
专家分:0
注 册:2007-12-9
第
3
楼
得分:0
谢谢楼上的朋友啊!我上面的程序写的有点问题~~~不好意思
#include<iostream.h>
template <class T>
class Fun
{int l;T *p;
static T sum;
public:
Fun(int i=1)
{ l=i;
p=new T[i];
}
void input();
void output();
void sort();
void look(T);
void add()
{
for(int i=0;i<l;i++)
sum+=p[i];
}
~Fun(){delete [] p;}
};
T Fun::sum=0;
template <class T>
void Fun<T>::input()
{ for(int i=0;i<l;i++)
{ cout<<"请输入第"<<i+1<<"个数据:";
cin>>p[i];
}
}
template <class T>
void Fun<T>::output()
{for(int i=0;i<l;i++)
cout<<p[i]<<' ';
}
template <class T>
void Fun<T>::sort()
{T tem;
for(int i=0;i<l-1;i++)
for(int j=i+1;j<l;j++)
if(p[i]>p[j])
{tem=p[i];
p[i]=p[j];
p[j]=tem;
}
}
template <class T>
void Fun<T>::look(T key)
{int k=-1;
for(int i=0;i<l;i++)
if(p[i]==key) k=i;
if(k!=-1) cout<<"您要的数据在第"<<k+1<<"个";
else cout<<"抱歉~您要的数据没有查询到!请从新输入:";
}
void main()
{Fun<int> s(4);int key;
cout<<"请输入数据:";
cout<<endl;
s.input();cout<<endl;
cout<<"确认您的数据为:";
s.output();cout<<endl;
cout<<"对您的数据排序后结果:";
s.sort();
s.output();cout<<endl;
cout<<"请输入您要查询的数据:";
cin>>key;
s.look(key);
}
请高手们在看看啊!~~~多谢啊
龙的图腾
2007-12-12 12:53
玉琪龙
等 级:
新手上路
帖 子:41
专家分:0
注 册:2007-12-9
第
4
楼
得分:0
谢谢这位仁兄啊 ~~~~·终于解决了!
还是现代人思维活跃啊 ~~~~我问老师,他们都说没见过!
呵呵呵…………
龙的图腾
2007-12-13 21:23
玉琪龙
等 级:
新手上路
帖 子:41
专家分:0
注 册:2007-12-9
第
5
楼
得分:0
请再指教一下啊~~~~~
那你怎么在你上面写的程序中,怎么在主函数中用那个静态变量呢?
#include <iostream>
using namespace std;
template<class T>
class A{
public:
A(T n):v2(n){}
static T v1;
const T v2;
static const T v3;
};
template<class T>
T A<T>::v1=1;
template<class T>
T A<T>::v3=1;
int main(){
A<int> a(10);
cout<<"v2="<<a.v2<<endl;
cout<<"v3="<<A::v3;//这个v3怎么用啊?
printf("%d",sizeof(A<int>));
getchar();
}
龙的图腾
2007-12-13 22:49
玉琪龙
等 级:
新手上路
帖 子:41
专家分:0
注 册:2007-12-9
第
6
楼
得分:0
先谢谢这位仁兄啊!
首先,七楼的那个程序是复制你的,我只是简单的改动一下,在机子上运行是没有错误的。
另外,“static const必须在声明的时候就初始化”我不知对不对,但是,我在c++6.0
运行时老是编译错误~~但是,改成“template<class T>
T A<T>::v3=1;
”之后就能通过编译!并且结果正确。
最后十分感谢您啊~~~就剩一个问题了,就是上面的那一个"static const"问题。
龙的图腾
2007-12-14 13:10
玉琪龙
等 级:
新手上路
帖 子:41
专家分:0
注 册:2007-12-9
第
7
楼
得分:0
谢谢楼上的朋友啊!
我懂了,也请大家支持哦
龙的图腾
2007-12-14 15:05
7
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-191322-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.141226 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved