Anzeige privater Klassenmember in Atmel Studio 7

#4889633
Lesenswert?

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:
#4889774
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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.
#4890802
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren