gpt4 book ai didi

c++ - 未看到包含的头文件

转载 作者:行者123 更新时间:2023-11-27 23:23:02 25 4
gpt4 key购买 nike

编辑:新文件。我在访问 Form1 类中的公共(public)函数时遇到问题。当我尝试使用它时,我得到了未找到的标识符。表格一:

#pragma once

#include "OpenGL.h"
#include "serialcom.h"
#include "calculations.h"

namespace GUI_1 {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace OpenGLForm;


/// <summary>
/// Summary for Form1
/// </summary>

public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
OpenGL = gcnew COpenGL(this->panel4, this->label16, 785, 530);
}
void changelabel2(float num)
{
label2 -> Text = " " + num;
}
protected: ...

OpenGL.h:

#include "stdafx.h"

#ifndef opengl
#define opengl

#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")

#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <math.h>

// Declare globals
...

using namespace System::Windows::Forms;

namespace OpenGLForm
{
public ref class COpenGL: public System::Windows::Forms::NativeWindow
{
public:

COpenGL(System::Windows::Forms::Panel ^ parentForm, System::Windows::Forms::Label ^ lbl, GLsizei iWidth, GLsizei iHeight)
{
CreateParams^ cp = gcnew CreateParams;

c_p_v v1, v2;
changelabel2(189);
...

所以这是行不通的(在上面的“changelabel2”中)。可能是因为我没有使用类名?

这是我的主要内容:

#include "stdafx.h"
#include <string.h>
#include <iostream>
#include <stdio.h>
#include < vcclr.h >
#include < stdio.h >
#include < stdlib.h >
#include < vcclr.h >
#include "Form1.h"
#include "calculations.h"
#include "serialcom.h"

using namespace GUI_1;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
// Enabling Windows XP visual effects before any controls are created
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);


// Create the main window and run it
Form1^ form = gcnew Form1();
Application::Run(form);

return 0;
}

调用 form.changelabel2 也不起作用。

最佳答案

看起来您在 OpenGL.h 和 Form1.h 之间存在循环依赖

如果可以,请尝试删除 #include "Form1.h",或将其转换为前向声明,如 class Form1;

此外,在 header 中使用 using namespace 时要小心,因为它会污染随后包含在其中的任何文件的命名空间。

关于c++ - 未看到包含的头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11478139/

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