【问题标题】:How to reference/use the variables initialized by the constructor in other methods in a mfc application如何在 mfc 应用程序的其他方法中引用/使用构造函数初始化的变量
【发布时间】:2021-04-01 04:00:14
【问题描述】:

所以,正如标题所说,我似乎无法在 mfc 应用程序的构造函数中使用初始化的变量。

// CMFCApplication1View construction/destruction

CMFCApplication1View::CMFCApplication1View() noexcept
{
    // TODO: add construction code here
    int x1 = 0;
}

但是当我在 onDraw 方法中使用这些变量时,它会给出未定义的错误

void CMFCApplication1View::OnDraw(CDC* pDC)
{   
    CMFCApplication1Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;

    pDC->Rectangle(20+x1, 30, 100+x1, 120);  //<- error here
}

编辑:
好的,所以我问这个问题的方式是完全错误的,我真正想问的是如何在 MFC 应用程序中声明成员变量(特别是 CMFCApplication1View.cpp 文件),我可以在同一类的其他成员函数中使用它.

【问题讨论】:

  • int x1 = 0; 这在构造函数中定义了一个局部变量x1。要使其可用于其他方法,请将其定义为 CMFCApplication1View 类中的成员变量。
  • 了解变量范围。
  • 嗨,是的,很抱歉,当我第一次写这个问题时,我在想一件事,却完全写了另一件事。抱歉,我现在改变了问题。
  • 了解class member variables。你的班级是CMFCApplication1View,你想给它添加一个成员变量。它是一个 MFC 类这一事实没有任何意义,它仍然只是一个类。

标签: c++ visual-c++ mfc


【解决方案1】:

你可能有一个像 MFCApplication1View.h 这样的文件。您的类将在该文件或类似名称的文件中声明。找到头文件中的类声明,修改如下:

class CMFCApplication1View
{
   // ... other stuff

   int x1;
};

你甚至可以在头文件中初始化它而不是在构造函数中(这是上面的替代,而不是添加):

class CMFCApplication1View
{
   // ... other stuff

   int x1 = 0;
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 2015-05-06
    • 2016-04-08
    相关资源
    最近更新 更多