C++中如何在函数体(不是main函数)内声明并定义全局对象?

示例程序如下:#include<iostream>usingnamespacestd;classtest{public:test(){x=1;}intx;intgetX(... 示例程序如下:
#include<iostream>
using namespace std;

class test {
public:
test() {x = 1;}
int x;
int getX() { return x; }
};

void func() {
test T;
}

int main() {
func();
cout << T.getX();
return 0;
}

在VS2010平台下报错,提示:“T”: 未声明的标识符,我理解是函数中创建的对象不是全局的。那该怎样在函数中创建一个全局对象呢?希望高手点拨,谢谢!
展开
 我来答
檀卫杰
2012-05-13 · 超过12用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:34.5万
展开全部
在VS2010下,修改代码如下:
// C_百度知道_4.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include<iostream>
using namespace std;

class test {
public:
test() {x = 1;}
int x;
int getX() { return x; }
};

test func() {
test T;
return T;
}

int main() {

cout << func().getX()<<endl;
return 0;
}
用func()函数返回一个test对象..不知道你是不是要这种效果;呵呵..
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
函觅厹iM
2012-05-13
知道答主
回答量:14
采纳率:0%
帮助的人:4.8万
展开全部
test Test; //声明Test为全局对象
int main() {
Test = new test(); //初始化全局Test对象
//func(); //这个函数没有任何作用,声明了一个新对象T,没有做其他操作,出了这个函数之后就无效了。另外没有初始化的对象是不能调用的。构造函数貌似也要new test调用吧,你声明Test T的时候不会自动调用构造函数。(我想应该是这样的)
cout << Test.getX();
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zsx10110
2012-05-13 · TA获得超过8871个赞
知道大有可为答主
回答量:2369
采纳率:66%
帮助的人:3056万
展开全部
都说了是全局对象了 当然是在函数体外的声明才行啊 所以在函数体里面是实现不了的
要想获得函数体里面的对象 也就是通过返回值了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GiraKoo
2012-05-13 · 还没有任何签名哦
GiraKoo
采纳数:3949 获赞数:11109

向TA提问 私信TA
展开全部
你想做什么呢?
试试静态函数,静态成员?
#include <iostream>
using namespace std;
class test {
public:
static int a;
};
int test::a = 10;
void main()
{
cout << test::a << endl;
}
这样的话,就相当于全局变量了。用类名加上与操作符调用a了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式