2017-01-21 2 views
-6

ちょうどC++で始まったのは、JavaとPythonでいくつかのコーディングが行われていますが、エラーが続いています:C++ポインタvoid関数の問題

標準ではない構文です。 '&'を使用してメンバーへのポインタを作成してください

複数のコードを変更しようとしましたが、問題を修正できませんでした。問題は私の主な機能のvoid setRadiusである。

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; 
} 

編集

解決済みの単純な構文エラー - これが私の問題を解決しました。

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

どこポインタですか? – giusti

+3

circle.setRadius(); double radius = circle.getRadius();どこからC++を学んでいても、どこからでも学ぶことができます。 –

+0

2行目を削除します。 'main()'の3行目は 'circle.getRadius()'でなければなりません。 '()'がなければ、両方の行(表面的に)はメンバ関数を呼び出すのではなく、そのアドレスを評価しようとします。正しい方法はコンパイラのように '&'を使います。 – Peter

答えて

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

最初の行には何もしません。 2行目は、関数doubleの変数を関数と同じに設定しようとします。おそらくあなたはこれらの機能を呼び出したいですか?

これは、非演算子メンバ関数の呼び出しはC++でどのように見えるかです:

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

だから、これを試してみてください。

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

最初の行は実際OPが尋ねたコンパイラエラーの理由です。それが何もしないと言っても間違っています - それは無効な構文です。 – Peter