Anzeige privater Klassenmember in Atmel Studio 7

OP #4889633
Hallo!

Ich programmiere in Atmel Studio 7 einen Controllino (Arduino).
Dazu habe ich mehrere Klassen in C++ erstellt, die in main referenziert 
werden.
Wenn ich nun eine Methode/Funktion der referenzierten Klasse aufrufen 
will, dann werden mir aber auch die privaten Klassenmember angezeigt.
Ist das normaes Verhalten von Atmel Studio?
Ich muss dazu sagen, dass ich das erste mal jetzt mit Atmel Studio und 
C++ arbeite.

Ein Codeauszug:
1
/* 
2
* HeatingController.h
3
*
4
* Created: 03.02.2017 20:07:04
5
*/
6

7

8
#ifndef __HEATINGCONTROLLER_H__
9
#define __HEATINGCONTROLLER_H__
10

11
#include <Controllino.h>
12
#include <Arduino.h>
13

14
class HeatingController
15
{
16
//variables
17
public:
18
protected:
19
private:
20
  float ambientTemperature;
21

22
//functions
23
public:
24
  HeatingController();
25
  ~HeatingController();
26
  void ReadAllTemperatures();
27
  float GetAmbientTemperature();
28
protected:
29
private:
30
  HeatingController( const HeatingController &c );
31
  HeatingController& operator=( const HeatingController &c );
32
}; //HeatingController
33

34
#endif //__HEATINGCONTROLLER_H__
1
/*
2
 * HomeController.cpp
3
 *
4
 * Created: 31.01.2017 19:07:41
5
  */ 
6

7
#include "HeatingController.h"
8

9
int main(void)
10
{
11
  // important for initialisation of some functions, e.g. delay
12
  // undocumented in Arduino help files
13
  init();
14

15
  HeatingController* controller = new HeatingController();
16

17
    while (1) 
18
    {
19
    controller->ReadAllTemperatures();
20
    }
21
    
22
    return 0;
23
}
Angehängte Dateien:
OP #4889774
Nur noch zur Ergänzung.
Ich programmiere auch C# unter Visual Studio.
Da werden in der Intellisense nur die Member angezeigt, die mit der 
entsprechenden Zugriffsberechtigung versehen sind.

Da Atmel Studio auf Visual Studio basiert, irritiert mich das Verhalten 
nun etwas.
Denn es dürften nach meinem Verständnis die privaten Member gar nicht 
angezeigt werden und ich bin mir nicht ganz sicher, ob ich mit der 
Implementierung der Klassen Schuld daran habe.

@Moderatoren: Bitte den Thread nach Compiler & IDE verschieben. Habe das 
falsche Forum erwischt.
#4890138
Markus H. schrieb:
> Ich programmiere auch C# unter Visual Studio.
> Da werden in der Intellisense nur die Member angezeigt, die mit der
> entsprechenden Zugriffsberechtigung versehen sind.

Versuch dasselbe mal mit C++ unter VS.

Eventuell zeigt das dasselbe Verhalten wie Atmel Studio, denn in C++ 
gibt es ja die friend class. Da müsste man dann viel mehr parsen um 
festzustellen ob private erlaubt ist oder nicht.
Gast #4890217
Ich koennte mir aber vorstellen, dass die privaten Member (der 
einfachheit halber) immer angezeigt werden, da die IDE sonst den Kontext 
erfassen muesste, in den man gerade schreibt.
Implementiere ich eine Klasse will ich natuerlich schon die privaten 
Member vorgeschlagen bekommen, innerhalb der Klasse ist das ja auch kein 
Problem. Immer ausblenden waere also auch falsch.

Info:
QtCreator zeigt mir auch die privaten Member an, sind aber auch mit 
einem kleinen Schloss markiert.
OP #4890802
Jim M. schrieb:
> Versuch dasselbe mal mit C++ unter VS.
>
> Eventuell zeigt das dasselbe Verhalten wie Atmel Studio, denn in C++
> gibt es ja die friend class. Da müsste man dann viel mehr parsen um
> festzustellen ob private erlaubt ist oder nicht.

Ich habe mir jetzt in Visual Studio 2015 C++ nachinstalliert.
Und es werden nur die Klassenmember mit den entsprechenden 
Zugriffsrechten angezeigt. Also außerhalb der Klasse werden keine 
privaten Member in Intellisense angezeigt.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.