2016-07-15 8 views
3

をコンパイルする前にエラーを与えるようなコードである:それは与えテンプレートオブジェクトクラス・パラメータはここで

#include <iostream> 
using namespace std; 

template<class OwnerType> 
class Move { 
public: 
    Move() {} 
    Move(OwnerType &_owner) { 
     owner = &_owner; 
    } 
    void GetPosition() { 
     cout << owner->x << endl; 
    } 
    OwnerType *owner; 
}; 

class Entity { 
public: 
    int x = 50; 
    Move<Entity> *move; 
}; 


int main() {   
    Entity en; 
    en.x = 77; 
    en.move = new Move<Entity>(en); // sign '=' is underlined by VS 
    en.move->GetPosition(); 
    return 0; 
} 

エラー:

a value of type "Move<Entity> *" cannot be assigned to an entity of type "Move<Entity> *" 

プログラムは、コンパイル期待通りに動作し、期待値を与えている、しかし、エラーまだここにいる。 これはおそらくテンプレートやコンパイルに時間がかかるものですが、実際にこのエラーが何を表しているかを知るには十分な知識がありません。

また、これは私のテストだったので、リークについて心配しないでください、エラーは私が理解していないものです。

ありがとうございます。

+3

インテリセンスを信頼しないでください。実際にコンパイルする。 –

+1

[OT]:プログラムがリークします。 – Jarod42

+0

'int main {'はあなたの実際のコードのものですか? '()'が見つかりません。 –

答えて

1

はインテリセンスが無効なエラーを表示するための知られている(例えばVisual Studio 2015: Intellisense errors but solution compiles参照)、コメントで示唆したように、コンパイラやリンカを信頼。

しかし、このエラーは非常に面倒です。解決策を終了し、.suoファイルを削除してください(それは隠してあります)。再度開いてください。 .suoファイルの詳細については、こちらSolution User Options (.Suo) File

参考資料:main()です。

+0

はい、ほとんどすべてを説明しています。ありがとう。 –

1

ですのでエラーではありません。

それがインテリセンスです: 参照:
Error 'a value of type "X *" cannot be assigned to an entity of type "X *"' when using typedef struct

Visual Studio 2015: Intellisense errors but solution compiles


旧:

あなたmainニーズ()

これが私の作品:

#include<iostream> 
using namespace std; 

template<class T> class Move { 
public: 
    Move() {} 
    Move(T &_owner) { 
     owner = &_owner; 
    } 
    void GetPosition() { 
     cout << owner->x << endl; 
    } 
    T *owner; 
}; 

class Entity { 
public: 
    int x = 50; 
    Move<Entity> *move; 
}; 


int main(){ 
    Entity en; 
    en.x = 77; 
    en.move = new Move<Entity>(en); // sign '=' is underlined by VS 
    en.move->GetPosition(); 

    return 0; 
} 

出力:

77 
+0

OPは動作しています、バグの無効なエラーです – buld0zzr

+0

正常に動作しますが、コンパイルする前でさえ、Visual Studio 2015が使われているとは言い切れませんでした。 –

+0

インテリセンスです。手伝ってくれてありがとう。 –

関連する問題