用extern引用一个结构变量,为什么不能给它重新赋值???有没有大神帮忙看一下

晒太阳的猪猪 2017-12-06 12:18:01
initsetting.h文件

#ifndef INTISETTING_H_
#define INTISETTING_H_
#include<iostream>
#include<string>
struct Position
{
double E;
double N;
double U;
};

struct init
{
int num;
std::string filename;
Position truePosition;
};

//extern init settings;
//extern void disp(const init & settings);

#endif

.cpp文件
#include"intisetting.h"

init settings = {500, "GPS_SDR.bin", {123.3, 456.6, 789.9}};

void disp(const init & settings)
{
std::cout<<settings.num<<" "
<<settings.filename<<" "
<<settings.truePosition.E<<" "
<<settings.truePosition.N<<" "
<<settings.truePosition.U<<" \n";
}

.main文件
#include<iostream>
#include<string>
#include"intisetting.h"
using namespace std;
//extern init settings;
//extern void disp(const init & settings);

int main()
{
disp(settings);
//settings = {12, "SanGuo.txt", {132.4, 465.7, 798.2}}; //?????
settings.num = 12;
settings.filename = "SanGuo.txt";
settings.truePosition.E = 132.4;
settings.truePosition.N = 465.7;
settings.truePosition.U = 798.2;
disp(settings);
return 0;
}

问题://settings = {12, "SanGuo.txt", {132.4, 465.7, 798.2}}; //????? 重新给setting赋值会出现错误:expected an expression

...全文
551 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
draculamx 2017-12-09
  • 打赏
  • 举报
回复
引用 1 楼 u010165006 的回复:
init settings = {500, "GPS_SDR.bin", {123.3, 456.6, 789.9}}; 结构体变量的初始化语法,一般赋值恐怕不行。
对的,这个语法,只是在你声明这个变量的时候才能这么用,声明过了以后,你只能用普通方法来访问: settings.num=12; settings.filename="SanGuo.txt" ......
ooolinux 2017-12-06
  • 打赏
  • 举报
回复
init settings = {500, "GPS_SDR.bin", {123.3, 456.6, 789.9}}; 结构体变量的初始化语法,一般赋值恐怕不行。
hongss 2017-12-06
  • 打赏
  • 举报
回复
一个一个来吧~~~

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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