【发布时间】:2019-05-10 15:04:57
【问题描述】:
我正在尝试定义一个结构变量并通过类作为下面的示例使用。我只想分配一次结构变量,而不是在每个函数中获取/设置。
global.h
struct structPort{
unsigned int portno;
unsigned int timeleft;
int dummy;
};
extern structPort mainPort; // this one is wanted to be used through classes
class1.h
#include "global.h"
class class1{
structPort classPort; // just wanted to deal with this inside class
public:
init(structPort &_prt);
changeDummy();
}
class1.cpp
void class1::init(port &_prt){
classPort = _prt;
}
void class1::changeDummy(){
classPort.dummy = 20;
cout << classPort.dummy << endl;
}
main.cpp
#include "global.h"
#include "class1.h"
structPort mainPort;
class1 mainClass;
main(){
mainPort.portno = 1;
mainPort.dummy = 10;
cout << mainPort.dummy << endl;
// this gives 10 - OK//
mainClass.init(mainPort);
mainClass.changeDummy();
// this gives 20 - OK//
// reaching from the main again gives 10 - NOT OK
// what i expected to see is 20
cout << mainPort.dummy << endl;
}
我想我找不到正确的引用和指针组合。
【问题讨论】:
-
您的
main缺少返回类型int。在所有cout和endl之前还缺少std::。class1的成员函数在类定义中都缺少返回类型。您使用init函数而不是类构造函数是否有原因?#include <iostream>也不见了。为了避免给你错误的提示:为什么你需要mainClass来保存对mainPort的引用而不是直接或通过复制引用mainPort? -
上面的代码只是一个示例,我只是简化了,根据主题相关,不相关的行已被删除
标签: c++ class struct pass-by-reference