두 개의 상호 종속 헤더 파일 : Microsoft CLR 구성 요소를 사용하여 빌드 된 BarP.h 및 addNewProductForm.h (길이가 너무 길어서 그대로 포함됩니다) :
BarP. 시간 :
오류 8 오류 C2039 : 'addNewProductForm'B '의 멤버가 아닌Visual C++에 포함하지 못했습니다.
#pragma once
#include "addNewProductForm.h"
#include "editBarOptionsForm.h"
#include "editDecayParamsForm.h"
#include "editExistingItemForm.h"
#include <math.h>
#include <string>
#include <iostream>
#include <fstream>
#include <msclr\marshal.h>
namespace BarPricer3 {
using namespace std;
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 msclr::interop;
ref struct productDat{...};
productDat^ createProduct(String^ name,double firstPrice,double lastPrice,double lastDemand){...};
public ref class BarP{
...
private: System::Void createNewProductForm(...){
BarPricer3::addNewProductForm^ newProductForm = gcnew addNewProductForm;
newProductForm->ShowDialog(this);
}
}
addNewProductForm.h
#pragma once
#include "BarP.h"
#include <fstream>
namespace BarPricer3 {
using namespace std;
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
public ref class addNewProductForm{
...
private: System::Void createNewProduct(...){
productDat^ theNewP = createProduct(this->name->Text,Convert::ToDouble(this->firstPrice->Text),Convert::ToDouble(this->lastPrice->Text),Convert::ToDouble(this->lastDemand->Text));
...
}
}
나는, 나는 다음과 같은 오류를 얻을 컴파일하려고
arPricer3 'D ... \ BarP.h 690 (내 코드의 라인 32)오류 에러 15 C2065'productDat '선언되지 않은 식별자 D : ... \ addNewProductForm.h (181) (내 코드의 라인 (19))
여기에 무슨 일이 일어나고 있는지에 대한 조언을 구할 수 있습니까?
감사합니다. '#pragma once '지시어가 순환 삽입을 피하기위한 것이 아닌가, 아니면 내가 거기에 뭔가를 놓치고 있는가? – deftfyodor
@deftfyodor 아니요, pragma 지시어는 포함 된 가드와 같습니다. 동일한 파일은 두 번 이상 포함되지 않지만 그게 전부입니다. 여전히 순환 종속성을 처리해야합니다. –