error C2143: syntax error: missing ';' Before '^'
error C2143: syntax error: missing ';' Before '^'
我有以下问题,我有一个 class A,它有一个 class B 的实例,class B 有一个 class A 的实例。在 VisualStudio 2013 中,出现错误“error C2143: syntax error: missing ';'在'^'"之前下面是class代码。提前致谢
#include "stdafx.h"
#include "BAsterNode.h"
using namespace System;
using namespace System::Collections::Generic;
ref class BAsterInfo
{
private:
IComparable^ info;
BAsterNode^ enlaceMayores; /* error C2143 */
public:
IComparable^ GetInfo();
void SetInfo(IComparable^);
BAsterNode^ GetEnlaceMayores();
void SetEnlaceMayores(BAsterNode^ enlaceMayoresP);
};
和其他 class
#include "stdafx.h"
#include "BAsterInfo.h"
using namespace System;
using namespace System::Collections::Generic;
ref class BAsterNode
{
private:
BAsterNode^ enlaceMenores;
List<BAsterInfo^>^ listaInformacion;
int Find(BAsterInfo^ info);
public:
List<BAsterInfo^>^ GetListaInfo();
void SetListaInfo(List<BAsterInfo^>^ listaInfoP);
BAsterNode^ GetEnlaceMenores();
void SetEnlaceMenores(BAsterNode^ enlaceMenoresP);
};
C++/CLI 与 C++ 一样,使用单遍编译。因为两个头文件相互包含,预处理器最终将其中一个放在第一位,而那个头文件最终会出现错误,其中第二个 class 尚未定义。我确定您还会收到有关未定义 class 的错误消息。
要解决此问题,请不要从一个头文件中包含另一个头文件。包含 .cpp 文件中的两个头文件,并在每个头文件中使用其他 class 的前向声明。这将允许您在各种方法声明中使用其他 class。您将需要包含在 .cpp 中的头文件来调用另一个 class 上的任何方法,因此如果您有任何使用头文件中定义的另一个 class 的函数,您我需要将它们移动到 .cpp。
#include "stdafx.h"
using namespace System;
using namespace System::Collections::Generic;
// Forward declaration
ref class BAsterInfo;
ref class BAsterNode
{
private:
BAsterNode^ enlaceMenores;
List<BAsterInfo^>^ listaInformacion;
int Find(BAsterInfo^ info);
public:
List<BAsterInfo^>^ GetListaInfo();
void SetListaInfo(List<BAsterInfo^>^ listaInfoP);
BAsterNode^ GetEnlaceMenores();
void SetEnlaceMenores(BAsterNode^ enlaceMenoresP);
};
我有以下问题,我有一个 class A,它有一个 class B 的实例,class B 有一个 class A 的实例。在 VisualStudio 2013 中,出现错误“error C2143: syntax error: missing ';'在'^'"之前下面是class代码。提前致谢
#include "stdafx.h"
#include "BAsterNode.h"
using namespace System;
using namespace System::Collections::Generic;
ref class BAsterInfo
{
private:
IComparable^ info;
BAsterNode^ enlaceMayores; /* error C2143 */
public:
IComparable^ GetInfo();
void SetInfo(IComparable^);
BAsterNode^ GetEnlaceMayores();
void SetEnlaceMayores(BAsterNode^ enlaceMayoresP);
};
和其他 class
#include "stdafx.h"
#include "BAsterInfo.h"
using namespace System;
using namespace System::Collections::Generic;
ref class BAsterNode
{
private:
BAsterNode^ enlaceMenores;
List<BAsterInfo^>^ listaInformacion;
int Find(BAsterInfo^ info);
public:
List<BAsterInfo^>^ GetListaInfo();
void SetListaInfo(List<BAsterInfo^>^ listaInfoP);
BAsterNode^ GetEnlaceMenores();
void SetEnlaceMenores(BAsterNode^ enlaceMenoresP);
};
C++/CLI 与 C++ 一样,使用单遍编译。因为两个头文件相互包含,预处理器最终将其中一个放在第一位,而那个头文件最终会出现错误,其中第二个 class 尚未定义。我确定您还会收到有关未定义 class 的错误消息。
要解决此问题,请不要从一个头文件中包含另一个头文件。包含 .cpp 文件中的两个头文件,并在每个头文件中使用其他 class 的前向声明。这将允许您在各种方法声明中使用其他 class。您将需要包含在 .cpp 中的头文件来调用另一个 class 上的任何方法,因此如果您有任何使用头文件中定义的另一个 class 的函数,您我需要将它们移动到 .cpp。
#include "stdafx.h"
using namespace System;
using namespace System::Collections::Generic;
// Forward declaration
ref class BAsterInfo;
ref class BAsterNode
{
private:
BAsterNode^ enlaceMenores;
List<BAsterInfo^>^ listaInformacion;
int Find(BAsterInfo^ info);
public:
List<BAsterInfo^>^ GetListaInfo();
void SetListaInfo(List<BAsterInfo^>^ listaInfoP);
BAsterNode^ GetEnlaceMenores();
void SetEnlaceMenores(BAsterNode^ enlaceMenoresP);
};