【发布时间】:2014-03-06 10:23:19
【问题描述】:
我有 2 个派生的类,我希望它们有自己的构造函数,而不是基类。这是标题和 .cpp 以及其他成员函数的剥离。
标题:
#pragma once
#include <SFML/Graphics.hpp>
class TextWrap : public sf::Text
{
public:
TextWrap() {}
};
class CircleWrap : public sf::CircleShape
{
public:
CircleWrap() {}
};
这是.cpp:
#pragma once
#include "wrappers.h"
#include "stdafx.h"
#include <SFML/Graphics.hpp>
TextWrap::TextWrap(sf::Font font)
{
setFont(font);
setCharacterSize(30);
setStyle(sf::Text::Bold);
setColor(sf::Color::White);
}
CircleWrap::CircleWrap(void)
{
setFillColor(sf::Color::Blue);
setRadius(25);
setPointCount(100);
}
当它被构建时,我在 Visual C++ 2010 中收到以下错误:
1>c:\users\joe\documents\visual studio 2010\projects\mouseavoider\mouseavoider\wrappers.cpp(14): error C2511: 'TextWrap::TextWrap(sf::Font)' : overloaded member function not found in 'TextWrap'
1> c:\users\joe\documents\visual studio 2010\projects\mouseavoider\mouseavoider\wrappers.h(5) : see declaration of 'TextWrap'
1>c:\users\joe\documents\visual studio 2010\projects\mouseavoider\mouseavoider\wrappers.cpp(38): error C2084: function 'CircleWrap::CircleWrap(void)' already has a body
1> c:\users\joe\documents\visual studio 2010\projects\mouseavoider\mouseavoider\wrappers.h(16) : see previous definition of '{ctor}'
我感觉我的构造函数的语法是错误的......但我不知道为什么。我在网上浏览了教程和示例,但我不知道为什么这不起作用。
编辑:已修复!我混淆了声明和定义,需要自己修复变量声明。
【问题讨论】:
-
错误非常简单。你已经在你的类定义中有一个定义,但你稍后会重新定义它。除此之外,您定义的参数列表与其原型不同。
CircleWrap不会出现错误,因为它是无效的。
标签: c++ class inheritance constructor sfml