Visual c++ C++/继承问题

Visual c++ C++/继承问题,visual-c++,inheritance,c++-cli,Visual C++,Inheritance,C++ Cli,在我的项目中,我有3个类(让我们分别命名为A、B和C)A是抽象的。它们具有以下关系: A是B B是C 在C中,我声明了一个变量vector成员\u vector。这会导致以下问题: C3699:'*':无法在类型'A' C4368:无法将'member\u vector'定义为托管'C'的成员:不支持混合类型 你知道为什么会发生这种错误吗?我认为循环类的使用可能有问题,但是,如何克服它?问题是,您试图在.NET Framework管理的类中,在C++/CLI中使用本机类型std::vector。

在我的项目中,我有3个类(让我们分别命名为
A
B
C
)<代码>A是抽象的。它们具有以下关系:
A
B

B
C

C
中,我声明了一个变量
vector成员\u vector。这会导致以下问题:

C3699:
'*'
:无法在类型
'A'

C4368:无法将
'member\u vector'
定义为托管
'C'
的成员:不支持混合类型


你知道为什么会发生这种错误吗?我认为循环类的使用可能有问题,但是,如何克服它?

问题是,您试图在.NET Framework管理的类中,在C++/CLI中使用本机类型
std::vector
。如果你不知道C++和.NET,那么就不建议使用C++/CLI。首先,您在类中使用的是一个本机类型,它是一个托管类(C4368)。此外,如果这是管理的(C3699),您需要使用“^”而不是“*”。

与其试图描述您的代码,不如发布一个具有代表性的示例?那么循环类的用法在哪里呢?这里肯定还有其他问题,因为这是一个C++/CLI错误。请发布项目的代码和详细信息。您遗漏了一个重要的详细信息—您正在使用
/clr
进行编译,并且您的3个类都是托管类型。您使用的是C++/CLI吗?为什么有提到“托管”对象?@ JPNavaRiNi:你使用的是C++ + CLI,而不是C++——完全不同的语言。如果你想使用C++,使用一个“Win32”项目模板不是“CLR”项目模板之一。虽然非常相似,但是C++和CLI不是C++,并且“*”也没有用相同的方式。我知道我使用Visual C++。我只是不知道VisualC++中“*”和“^”的区别。@ JPvavaLi看到,例如,更具体地说,“JPvNaRiNi:没有人指出你使用Visual C++,他们指出你使用C++ + CLI。我不明白你的观点。我使用Visual C++。我已经在其他程序中使用了STD:向量,它工作得很好。@ JPNavaRiN: Visual C++是编译器,而不是语言。您使用的语言是C++/CLI,它能够使用
std::vector
,但不能在您试图使用它的上下文中使用。你可能想用C++来代替。@ Idjjn我必须在其他类中创建一个类的向量,这在C++中是可能的吗?另外,我认为我已经在C++ C++项目中做了这种事情。@ jpVavaRiNi:“向量”比C++和CLI更为简单。惯用的C++/CLI代码将使用,而不是
std::vector
。在进一步评论之前,你需要掌握Visual C++、C++和C++之间的区别。