问题标签 [inheriting-constructors]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Viewmodel 在命名空间中不存在
如果这是一个愚蠢的问题,或者甚至不属于我要问的问题,我很抱歉,但我是 WPF 的新手,我似乎无法掌握它。现在我正在做类似于https://www.c-sharpcorner.com/article/use-inotifypropertychanged-interface-in-wpf-mvvm/的事情,我遇到了一个问题。当我尝试执行我的代码时:
我收到错误消息“名称空间‘DPS_Calculator_Prototype.UseOf_INotifyPropertyChanged’中不存在类型或名称空间名称‘ViewModel’(您是否缺少程序集引用?)”和“名称空间‘clr’中不存在名称‘MainWindowViewModel’ -命名空间:DPS_Calculator_Prototype.UseOf_INotifyPropertyChanged.ViewModel'。” 和“找不到类型'VM:MainWindowViewModel'。验证您没有丢失程序集引用并且所有引用的程序集都已构建。” 我两次收到第一个错误,一次在 MainWindow.g.cs 中,另一个在 MainWindow.xaml 中。其他两个都在 MainWindow.XAML 如果有人能告诉我我做错了什么,那就太好了。这是 XAML 文件:
c++ - 在模板派生类中使用类型别名继承构造函数
请看以下代码:
GCC 接受此代码,但 Clang 和 MSVC 拒绝它。谁是对的,为什么?
c++ - 通过派生类构造函数继承访问自己的私有构造函数
考虑:
GCC 接受(从 7.1 开始;以前全部拒绝)。Clang 接受b
andxyz
但拒绝a
and c
。MSVC 在 C++14 模式下拒绝所有,但在 C++17 模式下接受所有。
哪些编译器是正确的?C++14 和 C++17 之间的规则是否发生了变化 - 如果是这样,为什么在 C++14 中B::f
不允许访问其自己的构造函数(通过命名D
)?为什么 Clang 只接受 (function-style) cast atb
而不是 list-initialization ata
或构造函数调用 at c
?
(制作B
afriend
会使D
Clang 接受,但旧版本(3.8 和更早版本)和 C++14 模式下的 MSVC 除外。它对 gcc 没有影响。)
现在,我知道C++14 说:
如此声明的构造函数 [作为继承构造函数] 与 [基类] X 中的相应构造函数具有相同的访问权限。
在 C++17 中,规则被简化、澄清并移至 [namespace.udecl]:
命名构造函数的 using-declarator 不会创建同义词;相反,如果附加构造函数在用于构造相应基类的对象时可访问,则它们是可访问的,并且忽略 using 声明的可访问性。
所以,我认为也许“具有相同的访问权限”意味着继承的构造函数private
只能D
访问D
(及其朋友),而不是(并且private
可以B
访问B::f
),因为它们在B
. 但是在这种解释下,人们可以通过继承来颠覆访问检查并访问基类的私有构造函数。所以可以肯定的是,在 C++14 中,措辞的意图与在 C++17 中更清楚地表达的意图相同——但是为什么 MSVC 会根据语言版本改变其行为呢?
java - 如何制作子类构造函数?关于Java中的父子继承
因此,与其说是针对特定项目的问题,不如说是对未来的理解。
我不明白子类构造函数的外观和包含的内容。我知道如果需要,父类将初始化它们的属性和其他类的对象,但是当涉及到子类时,您是否通过super()
函数以及它们自己的属性来初始化要使用的父类属性?
例如:
(不运行代码......(我不认为,我是 Java 新手)
据我了解,在两个子类中,如果我想访问它们,我需要初始化父类属性,然后使用整个 get 和 set shebang,然后使用 super。使用它们的方法。我感到困惑的是,这是正确的做法吗?这是完全错误的还是我在正确的轨道上?