Autor Beitrag
Xardas008
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
BeitragVerfasst: Do 03.12.09 20:45 
Hallo,

ich habe gerade folgendes, ich versuche eine Klasse zu schreiben die mir Brüche darstellt. habe dazu 4 Konstruktoren definiert. Zum einen den Default-Ctor, dann einen mit 1nem Parameter, mit 2 und einen Copy-Ctor.

Hab dann beim erstellen folgendes gemacht:
ausblenden C#-Quelltext
1:
Rational a = new Rational(45);					

Und er bemängelt meinen Konstruktor mit 2 Parametern, dass er nicht existieren würde.
Folgende Konstruktoren habe ich:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
Rational()
        {
            num = 0;
            denom = 1;
        }

        Rational(int num)//:this()
        {
            this.num = num;
            denom = 1;
        }

        Rational(int num, int denom)//:this(num)
        {
            this.num = num;
            this.denom = denom;
        }

        Rational(Rational ct)
        {
            this.num = ct.Num;
            this.denom = ct.Denom;
        }


Hat wer ne Idee, was ich hier falsch gemacht habe? Meine Java-Version davon sieht exakt genauso aus und da gehts.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 03.12.09 20:49 
Hallo!

Versuchst Du die Klasse im selben Assembly zu instanzieren? Falls nicht: Die Default-Sichtbarkeit ist internal, möchtest Du also einen der Konstruktoren außerhalb Deines Assemblies benutzen, musst Du ihn als public deklarieren.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Xardas008 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
BeitragVerfasst: Do 03.12.09 20:52 
Das ist ja das seltsame gewesen. Beide Klassen sind im namespace Learning gewesen. Hab aber grade selber gemerkt das ich die gar nicht als public hatte und daher hat er sie nicht gesehen.

Wie es aussieht sind Ctors standardmäßig private, was mir nur irgendwie keinen Sinn ergibt. Internal hätte ich ja noch akzeptiert weil dann hätte er sie sehen müssen.

Problem ist aber jetzt gelöst danke dir für deine Unterstützung.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 03.12.09 21:04 
Nein, Konstruktoren sollten wie alles andere per Default internal sein.

Übirgens können zwei Klassen im selben Namespace, aber trotzdem in unterschiedlichen Assemblies sein, sodass sie ihre internal-Member gegenseitig nicht sehen.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Xardas008 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
BeitragVerfasst: Do 03.12.09 21:20 
user profile iconChristian S. hat folgendes geschrieben Zum zitierten Posting springen:
Nein, Konstruktoren sollten wie alles andere per Default internal sein.

Übirgens können zwei Klassen im selben Namespace, aber trotzdem in unterschiedlichen Assemblies sein, sodass sie ihre internal-Member gegenseitig nicht sehen.

Auch wenn sie im gleichen Projekt sind? Weil dann gehören die doch zur gleichen Assembly oder versteh ich da was falsch.
Weil die Klasse MainClass habe ich, um bestimmte Module testen zu können, die im gleichen Projekt sind und als normale Klassen definiert wurden.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 03.12.09 21:31 
user profile iconXardas008 hat folgendes geschrieben Zum zitierten Posting springen:
Auch wenn sie im gleichen Projekt sind? Weil dann gehören die doch zur gleichen Assembly oder versteh ich da was falsch.

Nein, wenn sie im gleichen Projekt sind, sind sie im gleichen Assembly. Ich hatte das nur angemerkt, weil Du in Deinem vorigen Posting von "gleichem Namespace" sprachst, aber "gleiche Assembly" ausschlaggebend ist ;-)


Nachdem ich's gerade getestet habe und daraufhin im Hejlsberg nachgesehen habe, muss ich mich auch korrigieren: Die Standardsichtbarkeit ist "private", womit alles geklärt sein dürfte :-)

Kommt davon, wenn man meistens nur in Delphi Prism programmiert ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".