gpt4 book ai didi

c++ - 错误 : ‘logFileObj’ does not name a type

转载 作者:行者123 更新时间:2023-11-28 07:35:08 25 4
gpt4 key购买 nike

我有一个名为 global.h 的文件,其内容是:

#define DEPTH 10
#define LOGGING //to log the progress of the program.
#ifdef LOGGING
#include <fstream>
#include <string>
extern std::string logFileName;
extern std::ofstream logFileObj;
#endif

还有main.cpp:

#include "global.h"

using namespace std;

#ifdef LOGGING
string logFileName = ".log";
ofstream logFileObj;
logFileObj.open(logFile); //line 13
logFileObj<<"depth: "<<DEPTH<<endl; //line 14
#endif

我在编译中经常遇到以下错误:

src/main.cpp:13:1: error: ‘logFileObj’ does not name a type
src/main.cpp:14:1: error: ‘logFileObj’ does not name a type

感谢任何帮助。

最佳答案

C++ 不允许在函数外进行操作。 C++ 允许您全局定义变量,但您需要将操作放在函数内。

如果我没看错你的问题,你只需要一个函数并在需要时调用它:

#include <fstream>
#include <utility>
#include <string>

template<typename T>
void WriteLog(const std::string& log_file_name, const std::string& prefix, const T& data)
{
std::ofstream log_file_handler(log_file_name.c_str(), std::ios::app); // if you use C++11, you could use string directly
log_file_handler << prefix << data << std::endl;
}

用法:

WriteLog<int>("app.log", "depth:", DEPTH);

关于c++ - 错误 : ‘logFileObj’ does not name a type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16896768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com