【问题标题】:defining a global ofstream in windows form以 windows 形式定义全局 ofstream
【发布时间】:2023-08-17 20:52:01
【问题描述】:

我需要这样做:

 #include <fstream>

    ...


ofstream myStream

    private: System::Void start_Click(System::Object^  sender, System::EventArgs^  e) {
    //open ofstream
                 }

    private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
    //write to ofstream
    }

这可能吗?

提前致谢。

【问题讨论】:

  • 你有什么尝试让你觉得你做不到?这对我来说似乎很简单。 ofstream 不是全局的;它只是你的类的一个实例变量。
  • 我尝试声明 ofstream 如上面的代码所示。但这是不允许的。我目前切换到 Streamwriter,但我更喜欢使用 ofstream。
  • 声明是什么样的?错误是什么?
  • 检查我的声明代码。错误是:“错误 C4368:无法将 'myStream' 定义为托管 'Data_Logger::Form1' 的成员:不支持混合类型”

标签: winforms visual-c++ ofstream


【解决方案1】:

代码 sn-p 显示您想要声明它的位置,而不是声明的样子。无论如何,问题是您不能在托管(.NET CLR)代码中使用非托管(C++ 本机)对象。您可以声明 ofstream* 变量,但不能声明 ofstreamofstream&amp;

如果您想使用ofstream 而不是System.IO.StreamWriter,您必须在一个单独的仅包含hive 代码的类中创建一个类,并在您的.NET 代码中实例化该类。 Here 是一篇针对此问题的 CodeProject 文章。

【讨论】:

  • 谢谢大卫。很高兴知道。