class LocationManager: NSObject, ObservableObject, CLLocationManagerDelegate {}
抽象类.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 ^
我想将对子类的引用分配给指向抽象类的指针。也许它在描述符中?如何使用链接而不是句柄?
有一个初始抽象类
abstract class GrandDad(val params:Array<Any>) {
...
}
另一个抽象类继承自它
abstract class Dad(params: Array<Any> = arrayOf()) : GrandDad(params) {
...
}
而常规类继承自它
class Son(param:String) : Dad(arrayOf(param)) {
....
}
这是我这样做的时候:
val son = Son("test")
结果是val params:Array<Any>
一个空数组。那些。看起来参数在从传递Son
到时丢失了Dad
整个大脑已经坏了。我究竟做错了什么?
我想创建一个基于数组的类,并添加一个get
实现循环反转的方法。最初代码看起来像这样:
export class CircularArray extends Array<string> {
constructor(data: string[]) {
super();
this.push(...data);
}
get(i: number): string {
return this[i % this.length];
}
}
在打字稿版本 2.0.10 中一切正常。然而,当我决定将 typescript 更新到当前版本 2.2.0 时,结果发现代码开始编译不同,即super()
构造函数中出现了对调用返回值的处理:
function CircularArray(data) {
var _this = _super.call(this) || this;
_this.push.apply(_this, data);
return _this;
}
这导致返回通过调用创建的对象Array()
。自然,它的原型是Array.prototype
, 不是CircularArray.prototype
,所以我的方法get
就丢失了。如何解决这个问题呢?
我正在尝试做这样的事情:
export declare class CircularArray extends Array<string> {
constructor(data: string[]);
get(i: number): string;
}
export function CircularArray(data: string[]): CircularArray {
this.push(...data);
return this;
};
CircularArray.prototype = Object.create(Array.prototype);
CircularArray.prototype.get = function (i: number): string {
return this[i % this.length];
};
但是我得到了一组合乎逻辑的错误:
错误 TS2300:重复的标识符“CircularArray”。
错误 TS2300:重复的标识符“CircularArray”。
PS:这个问题是英文的
你能告诉我如何覆盖 angular2 模板吗?有一个选择框模块 ng2-select。在这个模块中,您需要更改模板:添加一个自定义滚动条(ng2-slimscroll),稍微更改一下布局。问题是如何在angular2中实现这个?现在组件看起来像这样:
import { Component } from '@angular/core';
import {CORE_DIRECTIVES, FORM_DIRECTIVES, NgClass} from '@angular/common';
import {BUTTON_DIRECTIVES } from 'ng2-bootstrap/ng2-bootstrap';
import {SELECT_DIRECTIVES } from 'ng2-select/ng2-select';
import {BaseComponent} from '../base/base.component';
@Component({
selector: 'content',
templateUrl: 'app/admin/generation/generation.component.html',
directives: [SELECT_DIRECTIVES],
styleUrls: ['../../node_modules/ng2-select/components/css/ng2-select.css']
})
export class GenerationComponent {
public items:Array<string> = ['Amsterdam', 'Antwerp', 'Athens', 'Barcelona',
'Berlin', 'Birmingham', 'Bradford', 'Bremen', 'Brussels', 'Bucharest',
'Budapest', 'Cologne', 'Copenhagen', 'Dortmund', 'Dresden', 'Dublin',
'Düsseldorf', 'Essen', 'Frankfurt', 'Genoa', 'Glasgow', 'Gothenburg',
'Hamburg', 'Hannover', 'Helsinki', 'Kraków', 'Leeds', 'Leipzig', 'Lisbon',
'London', 'Madrid', 'Manchester', 'Marseille', 'Milan', 'Munich', 'Málaga',
'Naples', 'Palermo', 'Paris', 'Poznań', 'Prague', 'Riga', 'Rome',
'Rotterdam', 'Seville', 'Sheffield', 'Sofia', 'Stockholm', 'Stuttgart',
'The Hague', 'Turin', 'Valencia', 'Vienna', 'Vilnius', 'Warsaw', 'Wrocław',
'Zagreb', 'Zaragoza', 'Łódź'];
private value:any = {};
private _disabledV:string = '0';
private disabled:boolean = false;
private get disabledV():string {
return this._disabledV;
}
private set disabledV(value:string) {
this._disabledV = value;
this.disabled = this._disabledV === '1';
}
public selected(value:any):void {
console.log('Selected value is: ', value);
}
public removed(value:any):void {
console.log('Removed value is: ', value);
}
public typed(value:any):void {
console.log('New search input: ', value);
}
public refreshValue(value:any):void {
this.value = value;
}
}