关于模板结构体的问题
请看下面的代码:template <class T>
struct point{
inline point():x(0),y(0) {}
inline point(T _x, T _y):x(_x),y(_y){}
T x, y;
};
有两个问题
(1)为什么在结构体point中还要内联两个point,这样做的作用是什么?
(2)在point结构体中内联point,这该怎么理解? 再补充一个:
template <class T, class A>
struct orientedpoint: public point<T>{
inline orientedpoint() : point<T>(0,0), theta(0) {};
inline orientedpoint(const point<T>& p);
inline orientedpoint(T x, T y, A _theta): point<T>(x,y), theta(_theta){}
inline void normalize();
inline orientedpoint<T,A> rotate(A alpha){
T s=sin(alpha), c=cos(alpha);
A a=alpha+theta;
a=atan2(sin(a),cos(a));
return orientedpoint(
c*this->x-s*this->y,
s*this->x+c*this->y,
a);
}
A theta;
};
这里也有很多内联,且是不同形式的,有哪位大神给解释一下 不是内联两个 point 对象,这两个是构造函数
是用来创建 point 这个对象用的
人造人 发表于 2021-8-13 15:28
不是内联两个 point 对象,这两个是构造函数
是用来创建 point 这个对象用的
inline orientedpoint(T x, T y, A _theta): point<T>(x,y), theta(_theta){}
上面这一句后面是没有分号的,是写错了,还是怎样?这是源码,不应该错误呢 闪亮的马路 发表于 2021-8-13 17:46
inline orientedpoint(T x, T y, A _theta): point(x,y), theta(_theta){}
上面这一句后面是没有分号的 ...
什么错?
分号想加几个就加几个的说
template <class T>
struct point{
inline point():x(0),y(0) {}
inline point(T _x, T _y):x(_x),y(_y){}
T x, y;
};
template <class T, class A>
struct orientedpoint: public point<T>{
inline orientedpoint() : point<T>(0,0), theta(0) {};;;;;;;;;;;;;;;;;;;;;;
inline orientedpoint(const point<T>& p);
inline orientedpoint(T x, T y, A _theta): point<T>(x,y), theta(_theta){}
inline void normalize();
inline orientedpoint<T,A> rotate(A alpha){
T s=sin(alpha), c=cos(alpha);
A a=alpha+theta;
a=atan2(sin(a),cos(a));
return orientedpoint(
c*this->x-s*this->y,
s*this->x+c*this->y,
a);
}
A theta;
};
int main(void) {
orientedpoint<int, int> o;
return 0;
}
人造人 发表于 2021-8-13 17:53
什么错?
分号想加几个就加几个的说
想加几个就加几个,但是我说的源码是没有分号的,没有分号这是什么情况? 闪亮的马路 发表于 2021-8-16 10:16
想加几个就加几个,但是我说的源码是没有分号的,没有分号这是什么情况?
分号根据语法规则,随便加
下面这个程序没问题
#include <stdio.h>
;;;;
;;;
;;;int main(void) {;;;;;
;;;;;
;
;;;;;printf("hello world!\n");;;;
;;;
;;;;return 0;;;
};;;;;
;;;;;
页:
[1]