Om een lang verhaal kort te maken:
Deze code werkt:
Op dezelfde plek, deze code niet:
main.cpp:19: error: no match for 'operator+=' in 'progress += Tween<T>::getTween() [with T = Vertex2D<float>]()'
Mijn vraag: waarom werkt het bovenste wel en het onderste niet?
Volledige main.cpp:
Vertex2D (deel van de implementatie, niet compleet)
Tween::getTween()
Deze code werkt:
C++:
1
2
| Vertex2D<float> incr = tween.getTween(); progress += incr; |
Op dezelfde plek, deze code niet:
C++:
1
| progress += tween.getTween(); |
main.cpp:19: error: no match for 'operator+=' in 'progress += Tween<T>::getTween() [with T = Vertex2D<float>]()'
Mijn vraag: waarom werkt het bovenste wel en het onderste niet?
Volledige main.cpp:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #include <iostream> #include "EasedTween.cpp" #include "TickCounter.hpp" #include "Vertex2D.cpp" int main(int argc, char * const argv[]) { const TickCount duration = 20; Vertex2D<float> mov(100.0f, 50.0f); Tween<Vertex2D<float> > tween(mov, duration); Vertex2D<float> progress(0.0f, 0.0f); std::cout << "float:\n"; for(int i=0;i<=duration;i++) { std::cout << "[" << progress.getX() << ", " << progress.getY() << "]\n"; tween.tick(); progress += tween.getTween(); } return 0; }; |
Vertex2D (deel van de implementatie, niet compleet)
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| template<class T> Vertex2D<T> Vertex2D<T>::operator+=(Coordinate2D<T> &v2d) { this->x += v2d.getX(); this->y += v2d.getY(); return *this; }; template<class T> Vertex2D<T> Vertex2D<T>::operator+=(T t) { this->x += t; this->y += t; return *this; }; |
Tween::getTween()
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| template <class T> T Tween<T>::getTween() { TickCountProgress tickProgress = this->getTickProgress(); if(tickProgress < 1.0f) { T tween = this->getTweenAtProgress(tickProgress); tween -= this->tweenDone; this->tweenDone += tween; return tween; } else if(!this->isFinished()) { T tween = this->tweenTotal - this->tweenDone; this->tweenDone = this->tweenTotal; return tween; } else { return T(0); } }; |
[ Voor 20% gewijzigd door Gamebuster op 18-08-2010 19:19 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden