【发布时间】:2015-09-14 16:39:46
【问题描述】:
我正在创建一个类,它接收未知数量的对象,然后将它们绘制在屏幕上。
我正在尝试使用模板,但不知道它们是如何工作的,到目前为止,我阅读的每个资源都显示了不同的编写方式。
.cpp
// file composite.cpp
#include <SFML/Graphics.hpp>
#include "composite.h"
#include "copy.h"
template<typename arguments> class drawable
composite<arguments>::composite() {
drawable<arguments> shape;
}
void draw(sf::RenderWindow & window, sf::Vector2f position) {
for (int i = 0; i < 10; ++i) {
//if (parts[i] != NULL) {
// Draw part
//parts[i].draw();
//}
}
}
.hpp
// file composite.hpp
#ifndef _COMPOSITE_HPP
#define _COMPOSITE_HPP
#include <SFML/Graphics.hpp>
#include "drawable.h"
#include "copy.h"
template<typename arguments>
class composite : public drawable {
public:
composite<arguments>::composite();
void draw(sf::RenderWindow & window, sf::Vector2f position) {};
private:
copy *shape1, *shape2, *shape3;
copy *parts[10];
};
#endif
现在我收到类似“错误 C2514: 'composite' : class has no constructors”之类的错误,但我很确定我已经为该类创建了一个构造函数。
我做错了什么?
【问题讨论】:
-
我认为你应该得到比这更多的错误。
composite.cpp中的构造函数定义在语法上看起来不正确。此外,请编辑您的问题以显示发生错误的代码(即您创建composite对象的位置)以及 complete 和 unedited 构建日志。 -
@JoachimPileborg 是的,但是模板的定义真的正确吗?
-
你想用
template<typename arguments> class drawable composite<arguments>::composite(){...}做什么? -
@jaggedSpire 我想创建一个带有可变数量参数的构造函数。
-
好吧,那没问题。你没有时间学习如何做某事,而你需要去做。结论很明显:你会失败。没关系(至少在这结束时)。我仍然建议尝试学习如何做到这一点,而不是四处乱窜。链接的资源确实试图教你如何去做。如果您没有时间阅读它们,那意味着您没有时间解决您的问题!