[英]Derived class's new constructor not building: “overloaded member function not found”
我有兩個派生的類,我希望它們具有自己的構造函數,而不是基類。 這是標頭和.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}'
我感覺我的語法與構造器的構造是錯誤的...但是我不知道為什么。 我已經在線瀏覽了教程和示例,但我不知道為什么這不起作用。
編輯:已經修復! 我混合了聲明和定義,需要修復變量本身的聲明。
第一個構造函數中的錯誤是您在聲明一個默認構造函數,而不是一個以sf::Font
作為參數的構造函數。
在第二個構造函數中,您將放置{}
,這意味着您將定義沒有內容的構造函數。 如果以后要定義構造函數的主體,則必須放置;
在末尾。
它應該是:
class TextWrap : public sf::Text
{
public:
TextWrap(sf::Font font);
};
class CircleWrap : public sf::CircleShape
{
public:
CircleWrap();
};
您已使默認構造函數過載,但似乎正在訪問非默認版本。
頭文件應包含聲明而不是定義 。 TextWrap() {}
定義了一個不帶參數的構造函數,它的主體為空-大括號為主體。 您的類聲明應類似於以下內容:
class TextWrap : public sf::Text {
public:
TextWrap(sf:Font font);
}
聲明/原型中的參數必須與定義(例如,源文件)中的參數匹配,並且聲明中不應包含空主體。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.