static 结构体 怎么在类外面初始化?

LENOVO_ 2010-04-12 08:07:59



typedef struct _Point
{
int x,y;
}Point;

class A
{
public:
A();
Point p;
static Point sp;
};

A::A()
{
p.x=0;
p.y=0;
}
Point A::sp=0; // 1
int A::sp.x=0; // 2
int A::sp.y=0; // 3



int main()
{

A a;
return 0;
}


第2,3行的.x .y 自动调用不出来,我自己加上去的。
1,2,3行编译报错。

------ 已启动全部重新生成: 项目: 算法设计题, 配置: Debug Win32 ------
正在删除项目“算法设计题”(配置“Debug|Win32”)的中间文件和输出文件
正在编译...
main.cpp
f:\算法设计题\算法设计题\main.cpp(20) : error C2440: “初始化”: 无法从“int”转换为“Point”
无构造函数可以接受源类型,或构造函数重载决策不明确
f:\算法设计题\算法设计题\main.cpp(21) : error C2143: 语法错误 : 缺少“;”(在“.”的前面)
f:\算法设计题\算法设计题\main.cpp(21) : error C2371: “sp”: 重定义;不同的基类型
f:\算法设计题\算法设计题\main.cpp(12) : 参见“sp”的声明
f:\算法设计题\算法设计题\main.cpp(22) : error C2143: 语法错误 : 缺少“;”(在“.”的前面)
f:\算法设计题\算法设计题\main.cpp(22) : error C2371: “sp”: 重定义;不同的基类型
f:\算法设计题\算法设计题\main.cpp(12) : 参见“sp”的声明
生成日志保存在“file://f:\算法设计题\算法设计题\Debug\BuildLog.htm”
算法设计题 - 5 个错误,0 个警告
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========




我用的是 VS2008.

有些迷惑!
...全文
369 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
elegant87 2010-04-13
  • 打赏
  • 举报
回复
Point A::sp={0,0}
struct初始化要完整
wang7890 2010-04-13
  • 打赏
  • 举报
回复
可以当类用
cattycat 2010-04-12
  • 打赏
  • 举报
回复
Point A::sp={0,0}
Julykey 2010-04-12
  • 打赏
  • 举报
回复
struct还能继承呢,你就把它当类用。
SuperFC 2010-04-12
  • 打赏
  • 举报
回复
struct在C++中也能当类来用,未声明是公用还是私用时,在struct类中默认公用
helloworldex 2010-04-12
  • 打赏
  • 举报
回复

#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <cstdlib>

using namespace std;

//c++ 中的结构体其实就是类,只是默认的访问控制属性不同
//结构体默认的是 public
//类默认的是private
typedef struct _Point
{
int x,y;

_Point()
{
x = 0;
y = 0;
}

_Point(int parameterX, int parameterY)
{
x = parameterX;
y = parameterY;
}


}Point;

class A
{
public:
A();
Point p;
static Point sp;
};

A::A()
{
p.x=0;
p.y=0;
}

Point A::sp(0,0);




int _tmain(int argc, _TCHAR* argv[])
{
A a;
cout << a.sp.x << " "<< a.sp.y << endl;
system("pause");
return 0;
}
LENOVO_ 2010-04-12
  • 打赏
  • 举报
回复
哦,原来是这样。以前还真没写过。
耍宝王 2010-04-12
  • 打赏
  • 举报
回复
Point A::sp={0, 0};
或者
Point A::sp;
stardust20 2010-04-12
  • 打赏
  • 举报
回复
Point A::sp={1,1};
这样初始化试下。。

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧