2017-01-21 1 views
-6

Commençons par C++ ont fait du codage dans java et python mais continuent d'obtenir une erreur:C++ pointeur void fonction problème

syntaxe non standard; utilisez '&' pour créer un pointeur vers le membre

a essayé de changer le code plusieurs fois et n'a pas pu résoudre le problème. le problème est avec le void setRadius dans ma fonction principale.

circleType.h

#include <iostream> 
using namespace std; 

class circleType { 
private: 
    double radius; 
public: 
    circleType(); 
    void setRadius(); 
    double getRadius(); 
}; 

circle.cpp

circleType::circleType() {} 

void circleType::setRadius() { 
    cout << "what is the radius of your circle: "; 
    cin >> radius; 
} 

double circleType::getRadius() { 
    cout << "your radius is: " << radius << endl; 
    return radius; 
} 

int main() { 
    circleType circle; 
    circleType::setRadius; 
    double radius = circle.getRadius; 
    return 0; 
} 

modifier

Résolu, erreur de syntaxe simple - cela a résolu mon problème.

circle.setRadius(); 
double radius = circle.getRadius(); 
+0

Où est le pointeur? – giusti

+3

circle.setRadius(); double rayon = circle.getRadius(); Et partout où vous apprenez le C++, apprenez-le d'un autre endroit. –

+0

Supprimer la deuxième ligne. La troisième ligne de 'main()' doit être 'circle.getRadius()'. Sans le '()', les deux lignes (ostensiblement) essaient d'évaluer l'adresse de la fonction membre, plutôt que de l'appeler, et la façon correcte de le faire est d'utiliser un '&' comme le dit le compilateur. – Peter

Répondre

3
circleType::setRadius; 
double radius = circle.getRadius; 

La première ligne ne fait rien. La deuxième ligne tente de définir une variable de type double égale à une fonction. Peut-être que vous voulez appeler ces fonctions?

C'est ce que les appels de fonction de membre non-opérateur ressemblent en C++:

double area = circle.areaCir(radius); 
double circumferance = circle.circumCir(radius); 
circle.printCir(circumferance, area); 

Donc, essayez ceci:

circle.setRadius(); 
double radius = circle.getRadius(); 
+1

La première ligne est en fait la raison de l'erreur de compilation demandée par l'OP. Dire qu'il ne fait rien est incorrect - c'est une syntaxe invalide. – Peter