这是一个愚蠢的问题,必须是一个简单的答案,但经过几个小时的搜索,我找不到答案。我需要做的是拥有一对.cpp文件,比如main.cpp和help.cpp,它们有一个变量,它们共享的变量vars1,可以更改值并检测该值何时被更改。对我来说有意义的方法是,我只是在头文件中的类中声明变量,并在两个.cpp文件中包含该头文件,但这似乎不起作用。
以下是我的代码的副本:
#include <iostream>
#include <fstream>
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include "variables1.h"
using namespace std;
int main(){
variables1 vars1;
do {
cout << "Welcome\n If you need help, type 'yes' now\n";
cin.getline(vars1.input, 1024);
if (strcmp(vars1.input, "yes") == 0 || strcmp(vars1.input, "Yes") == 0){
vars1.helpvar = true;
cin.get();
}
else{
cout << "Okay then, glad that you know your way around\n";
}
cin.clear();
cout << "What would you like to do?\n";
cin.getline(vars1.input, 1024);
if (strcmp(vars1.input, "logon" ) == 0 ) {
}
} while (0 == 0);
}
help.cpp:
#include <iostream>
#include "variables1.h"
using namespace std;
int help(){
variables1 vars1;
do {
if (vars1.helpvar == true)
cout << "detecting";
} while (0 == 0);
}
variables1.h:
class variables1
{
public:
bool helpvar;
char input[1024];
};
答案 0 :(得分:0)
实际上你正在做的是对于主文件和help.cpp,你要创建两个不同的对象,并分别为每个对象设置helpvar变量。你想要的是有一个help.cpp和main使用的对象只修改helpvar变量的单个实例。
答案 1 :(得分:0)
将帮助功能更改为
int help(const variables1& myHelpobject ){
if (myHelpobject.helpvar == true) {
cout << "detecting";
}
}
然后在main中调用函数:
help(vars1)
之前您正在做的是创建一个独立的,独立的帮助对象。
这里我们在main中创建对象,然后将对它的引用传递给函数。
答案 2 :(得分:0)
使用的技术取决于变量的用途。
如果它是某种全局参数,您必须在所有代码中使用,最简单的方法是将其定义为全局变量:
主文件:
variables1 vars1; // outside all functions
int main(){
...
}
使用变量:
在variables1.h或其他cpp文件中extern variables1 vars1; //outside all functions
但是,在a中初始化和维护这些变量的代码也应该在类中定义。例如,构造函数应默认定义值,例如,如果启用或禁用了帮助。
如果您的变量用于代码的不同部分之间的通信,特别是如果某些代码的主要目标是处理这些变量的内容,那么最好通过传递变量作为参数(如果通信是双向的,则通过引用(&amp;)或按值)。
答案 3 :(得分:0)
发布的代码有两个主要问题:
int help()
永远不会运行
需要调用此函数才能运行它。没有任何事情这样做,所以无论vars1.helpvar
的价值如何,你都不会看到"detecting"
输出。
考虑添加一个带有函数定义的help.hpp,并从main
调用该函数。
vars1.helpvar
之间未共享 int help()
目前,您有两个variables1
实例,helpvar
是一个成员变量,因此每个实例都有一个单独的副本。
你可以:
helpvar
成为variables1
variables1
和main
之间共享一次help
个实例。静态变量的使用更有可能在以后给出设计问题所以我更喜欢选项2。