我在模板和组合风格编码方面遇到了一些麻烦。我有一个对象在* this参数的另一个构造函数中创建。对不起,如果我不清楚。代码如下:使用用户定义的类作为参数的模板
在outer.h文件:
class outer {
public:
outer(int w, int l);
int getWidth();
int getLength();
private:
inner<outer> test(*this);
int width;
int length;
};
outer::outer(int w, int l) {
width = w;
length = l;
}
int outer::getLength() {
return length;
}
在inner.h文件
template<typename T>
class inner {
public:
inner(T &name);
private:
int top;
int bot;
};
template<typename T>
inner<T>::inner(T &name) {
top = name.getLength() /2;
bot = -name.getLength()/2;
}
我不知道这是允许的,因为我可以”在网上找到解决这个问题的东西。编译器在outer.h中的这个语句有问题。
在此先感谢您的帮助。
确保您使用C++ 11进行编译,并且您的编译器支持该功能。 – chris 2013-03-19 00:01:27
@chris只能用'='或'{}',而不能用'()'。 – juanchopanza 2013-03-19 00:06:35
@ juanchopanza,哦,是的,没错。无论如何,无论如何我都会使用{}。 – chris 2013-03-19 00:37:24