好的,从C++ 进程重新制定和合并,以状态 3 混淆终止到具有最少代码的单个文件,用“cout”替换我的“日志”引用,打印到控制台而不是文件。我通过 code::blocks 编译器运行它并得到一个不同的错误,但是对于同一行 ['log' is not declared in this scope]。当我在自己的文件中有类时,它只是以“状态 3”关闭程序。
我之前遇到过范围错误,自己修复了它,并认为我理解它,但我想不是......
#include <iostream>
#include <string> // Doesn't complain if this is not present...
using namespace std;
//------------------------------------------------------------
class Logfile {
public:
bool LACT; // Is log file active?
string value; // Data to be entered
Logfile();
~Logfile();
void entry(string value); // Make an entry
};
Logfile::Logfile() { // Constructor
LACT = true;
cout << "OPENED\n";
}
Logfile::~Logfile() {
cout << "CLOSED\n";
}
void Logfile::entry(string value) {
if ( LACT ) cout << value << endl;
}
//--------------------------------------------------
class Engine { // Constructor contains only code for this class right now
public :
Engine();
};
这一行是编译器挂起并给我错误的地方:
Engine::Engine() {
log.entry("Engine constructed"); // !Problem line!
}
我是否在正确的轨道上认为问题在于我从不同的类中错误地调用了现有对象的类方法?
//--------------------------------------------------
int main()
{
Logfile log;
Engine engine;
cout << "Hello world!" << endl;
return 0;
}
当我'//'有问题的行时,一切运行正常,控制台打印出 OPENED, Hello World!, CLOSED。感谢您的耐心和时间,因为我确信这比我认为的要简单得多——而且是新手。
--
我问这个问题的最初目的是(现在我意识到)从多文件程序中的任何 *.cpp 文件中获取一个全局声明的对象。我刚刚找到了这个答案:http ://www.cplusplus.com/forum/beginner/3848/ ,以防这可能对其他有类似问题的人有所帮助。