2016-04-29 28 views
-2

に私はこれに新しいですし、C++エラーC2659は、C++のVisual Studio

でのプログラミングに私はエラーエラーを得続ける:1つのエラーC2659: '=':左オペランドWとしての機能:CGT 215 \を最終的なプロジェクト\ \ゲーム\ゲーム\ paddle.cpp 11 1つのゲーム

2のIntelliSense:\ CGT 215 \最終的なプロジェクト\ゲーム\ゲーム\のpaddle.cpp 11 2ゲーム

#include "Paddle.h" 
#include <iostream> 


Paddle::Paddle(int width, int height, float (*Controller)()) 
{ 
    m_position.x = 100; 
    m_position.y = 100; 
    m_width = width; 
    m_height = height; 
    Control = Controller; 
} 

void Paddle::Update() 
{ 
    m_position.y += *Control(); 
} 
+0

あなたの質問はこの記事と非常に関連しています:http://stackoverflow.com/questions/21565790/c-pointer-to-a-function-in-struct –

答えて

0

:式はワット修正左辺値でなければなりませんエラーコードが与えられると、hereと書かれているように、Controlは既存の関数であり、関数ポインタではないようです割り当てることができません。関数ポインタを保持する別のフィールドを定義する必要があります。ここで

それを行うためのコードサンプル:

struct Paddle 
{ 
    float (*Control)(); 
    ... 

    Paddle(int width, int height, float (*Controller)()); 
    void Update(); 
}; 

次に、あなたのUpdate実装がControl関数ポインタデリファレンスべきではありません。

void Paddle::Update() 
{ 
    m_position.y += Control(); 
} 

あなたの更新機能は変わらないことがあります。

+0

どうすればいいですか? – Kendra

+0

@Kendra: 'Controller'引数を定義するのと同じです。 – MSalters

+0

申し訳ありませんが、私は混乱しており、これに新しいです。これはどうすればいいですか? – Kendra