抽象类.h:
#pragma once
#include "class_word.h"
using namespace System;
ref class notion abstract {
protected:
String ^ _language;
String ^ _inscription;
String ^ _meaning;
int _id;
public:
notion(String ^ lng, String ^ inscr, String ^ mnng) :
_language(lng), _inscription(inscr), _meaning(mnng) { }
virtual int print() abstract;
};
//---------------------------------------------------------------------
ref class vocabulary {
private:
array<notion ^> ^ntn_array;
public:
vocabulary();
void set_array(String ^file_path, String ^lng);
};
inline vocabulary::vocabulary() { ntn_array = nullptr; }
inline void vocabulary::set_array(String ^file_path, String ^lng) {
array<String ^> ^whole = IO::File::ReadAllLines(file_path);
ntn_array = gcnew array<notion ^>(whole->Length); // allocate memory
for(int i = 0; i < whole->Length; ++i) {
array<String ^> ^current = whole[i]->Split('#');
// THE ERROR HERE BELOW
ntn_array[i] = gcnew word(lng, current[0], current[2], current[3]);
}
}
class_word.h
#pragma once
#include "abstract_classes.h"
ref class word : public notion {
String ^example;
static int counter = 0;
public:
word():notion("","","") { };
word(String ^lng, String ^inscr, String ^mnng, String ^expl) :
notion(lng, inscr, mnng), example(expl) { _id = ++counter; }
virtual int print() override {
return 0;
}
};
主文件
#include "abstrace_classes.h"
int main() {
return 0;
}
问题:
数据从文件中逐行加载到类型为 的数组中String ^
。逐个元素,每一行被分成子串,并放入一个current
相同类型的数组中 ContainerString ^
类vocabulary
的抽象notion
从中继承word
。它甚至没有在main.cpp
. set_array
在类方法中它vocabulary
会抛出一个错误:
类型值
word ^
不能分配给类型实体notion ^
我想将对子类的引用分配给指向抽象类的指针。也许它在描述符中?如何使用链接而不是句柄?
类的所有声明和实现必须放在一个文件中。编译没有错误。似乎他们在不同的文件中看不到对方。