gpt4 book ai didi

c++ - 存储所有变量的参数文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:06 24 4
gpt4 key购买 nike

背景:因此,我创建了一个基本上是一个大型首选项对话框的应用程序,用户可以在其中配置多个页面,每个页面都有一系列不同的设置。这些设置采用下拉菜单和文本框的形式。我想将所有变量存储到一个巨大的“Parameters.h”文件中,以便我可以从应用程序的任何位置访问它们。每个子页面都有自己的源文件和头文件。

不过我在使用指针时遇到了问题。我不确定如何引用 Parameters 类。基本上,我的应用程序有两个主要组件:一个主对话框和一堆子页面。主对话框是根据用户在主对话框左侧的列表框中选择的页面显示和隐藏子页面的地方。

我现在只处理一个子页面,并且有以下内容,但是当我调试时,到处都是 。我已经大大简化了代码,但应该足以弄清楚我做错了什么。

问题:那么我如何在每个子对话框中指向这个 Parameters 类,以便我可以存储和使用所有这些变量?


SAPrefsDialog.cpp:包含子页面的主对话框

BOOL CSAPrefsDialog::OnInitDialog() 
{
CDialog::OnInitDialog();
FSC_Main fscMain;
fscMain.SetParametersPointer(&m_pParams);
// [ ... ]
}

SAPrefsDialog.h:主对话框头文件

#include "Parameters.h"

public:
CSAPrefsDialog(CWnd* pParent = NULL); // standard constructor
~CSAPrefsDialog();

Parameters m_pParams;

FSC_Main.h:子页面头文件

#include "Parameters.h"

class FSC_Main : public CSAPrefsSubDlg
{
// Construction
public:
FSC_Main(CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(FSC_Main)
enum { IDD = IDD_FS_CONFIG_MAIN };
//}}AFX_DATA

public:

void SetParametersPointer(Parameters* pParameters)
{ m_Params = pParameters; }

private:
Parameters *m_Params;
};

参数.h

#include "stdafx.h"
#include "prefs.h"

#pragma once

class Parameters
{
public:
Parameters(); // standard constructor
public:
~Parameters(void);

protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

public:

//*****************************************************************************
//
// FSC_Main.cpp Variables
//
//*****************************************************************************

CString m_strVehiclesMainNumVehicles;
CString m_strVehiclesMainMaxSensorCount;
CString m_strVehiclesMainTaskProcessingInterval;
CString m_strVehiclesMain
// [ ... ]

参数.cpp

#include "stdafx.h"
#include "prefs.h"
#include "pages.h"
#include "Parameters.h"

//*****************************************************************************
//
// Parameters::Parameters
//
//*****************************************************************************

Parameters::Parameters():
m_strVehiclesMainNumVehicles("")
, m_strVehiclesMainMaxSensorCount("")
, m_strVehiclesMainTaskProcessingInterval("")
// [ ... ]
{
}

最佳答案

问题是您将页面作为 CSAPrefsDialog::OnInitDialog 中的局部变量,一旦您离开该函数,这些变量就会被销毁。您应该将它们作为您的 CSAPrefsDialog 类的成员变量。您所做的其他一切看起来都很好。

关于c++ - 存储所有变量的参数文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6776967/

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