// Inheritance.cpp : main project file.
#include "stdafx.h"
using namespace System;
ref class Base {
private:
int value;
int value2;
Base() { this->value2 = 4; }
protected:
Base(int n) {
Base(); // <- here is my problem
value = n;
}
int get(){ return value; }
int get2(){ return value2; }
};
ref class Derived : Base {
public:
Derived(int n) : Base(n) { }
void println(){
Console::WriteLine(Convert::ToInt32(get()));
Console::WriteLine(Convert::ToInt32(get2()));
}
};
int main(array<System::String ^> ^args) {
Derived ^obj = gcnew Derived(5);
obj->println();
Console::ReadLine();
}
Выход консоли:
0
5
я знаю, что я вызываю конструктор Base (), и я знаю, что я создаю что-то вроде нового объекта, который исчезает после вызова Base (int n) ...
но я понятия не имею, как я мог бы объединить свой частный конструктор по умолчанию с защищенным.
(я использую .NET Framework через Visual-Studio-2010, но я думаю, что это больше похоже на общую проблему с ++)