簡體   English   中英

派生類的新構造函數未構建:“未找到重載的成員函數”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM