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”: 未声明的标识符,我理解是函数中创建的对象不是全局的。那该怎样在函数中创建一个全局对象呢?希望高手点拨,谢谢! 展开
#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”: 未声明的标识符,我理解是函数中创建的对象不是全局的。那该怎样在函数中创建一个全局对象呢?希望高手点拨,谢谢! 展开
4个回答
展开全部
在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对象..不知道你是不是要这种效果;呵呵..
// 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对象..不知道你是不是要这种效果;呵呵..
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
test Test; //声明Test为全局对象
int main() {
Test = new test(); //初始化全局Test对象
//func(); //这个函数没有任何作用,声明了一个新对象T,没有做其他操作,出了这个函数之后就无效了。另外没有初始化的对象是不能调用的。构造函数貌似也要new test调用吧,你声明Test T的时候不会自动调用构造函数。(我想应该是这样的)
cout << Test.getX();
return 0;
}
int main() {
Test = new test(); //初始化全局Test对象
//func(); //这个函数没有任何作用,声明了一个新对象T,没有做其他操作,出了这个函数之后就无效了。另外没有初始化的对象是不能调用的。构造函数貌似也要new test调用吧,你声明Test T的时候不会自动调用构造函数。(我想应该是这样的)
cout << Test.getX();
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
都说了是全局对象了 当然是在函数体外的声明才行啊 所以在函数体里面是实现不了的
要想获得函数体里面的对象 也就是通过返回值了
要想获得函数体里面的对象 也就是通过返回值了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你想做什么呢?
试试静态函数,静态成员?
#include <iostream>
using namespace std;
class test {
public:
static int a;
};
int test::a = 10;
void main()
{
cout << test::a << endl;
}
这样的话,就相当于全局变量了。用类名加上与操作符调用a了。
试试静态函数,静态成员?
#include <iostream>
using namespace std;
class test {
public:
static int a;
};
int test::a = 10;
void main()
{
cout << test::a << endl;
}
这样的话,就相当于全局变量了。用类名加上与操作符调用a了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询