错误 LNK2001:未解析的外部符号 -- 我无法获得简单的继承以在C++中工作
error LNK2001: unresolved external symbol -- I can't get a SIMPLE INHERITANCE to work in C++
我很难使用继承。我正在学习计算机科学,必须解决这个问题。。。Rihgt现在我正在尝试创建我自己的类"Copy",该类包含对"Drawable"对象的引用,例如,我有一个类为"circle"的对象,它继承自"Drawable"。我想复制所说的对象"圆",这似乎还可以。但当我想调用"绘制"方法时,情况会变糟。
错误消息:
1>------ Build started: Project: Project2, Configuration: Debug Win32 ------
1> main.cpp
1> Drawable.cpp
1> copy.cpp
1> Cirkel.cpp
1> Generating Code...
1>Cirkel.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Drawable::draw(class sf::RenderWindow &,class sf::Vector2<float>)" (?draw@Drawable@@UAEXAAVRenderWindow@sf@@V?$Vector2@M@3@@Z)
1>copy.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Drawable::draw(class sf::RenderWindow &,class sf::Vector2<float>)" (?draw@Drawable@@UAEXAAVRenderWindow@sf@@V?$Vector2@M@3@@Z)
**这是我的主要:**
#include <SFMLGraphics>
#include "circle.hpp"
#include "copy.hpp"
int main(){
sf::RenderWindow window{ sf::VideoMode{ 640, 480 }, "SFML window" };
circle blauwe_circle{ 40.0F, sf::Color::Blue };
circle rode_circle{ 10.F, sf::Color::Red };
copy cBlauw{ sf::Vector2f{ 40.f, 40.f }, blauwe_circle };
copy cRoodA{ sf::Vector2f{ 50.f, 50.f }, rode_circle };
sf::Vector2f nul{ 0.f, 0.f };
while (window.isOpen()){
sf::Event event;
while (window.pollEvent(event)){
if (event.type == sf::Event::Closed) window.close();
}
sf::sleep(sf::milliseconds(20));
}
return 0;
}`
可提取.hpp
class Drawable
{
public:
virtual void draw(sf::RenderWindow & window, sf::Vector2f vector);
};
Circle.hpp:
#include "Drawable.hpp"
class circle : public Drawable{
public:
circle(float size = 30, sf::Color color = sf::Color::Red);
void draw(sf::RenderWindow & window, sf::Vector2f position) override;
private:
float size;
sf::Color color;
sf::CircleShape c;
};
cirlce.cpp
#include "circle.hpp"
#include "Drawable.hpp"
circle::circle(float fSize, sf::Color color) :
size{ fSize },
color{ color }
{
c.setRadius(size);
c.setPointCount(30U);
c.setFillColor(color);
}
void circle::draw(sf::RenderWindow & window, sf::Vector2f position){
c.setPosition(position);
window.draw(c);
}
复制.hpp:
#include "Drawable.hpp"
class copy: public Drawable
{
public:
copy(sf::Vector2f position, Drawable & c);
void draw(sf::RenderWindow & window, sf::Vector2f vector) override;
private:
sf::Vector2f position;
Drawable & c;
};
复制.cpp
#include "copy.hpp"
#include "Drawable.hpp"
copy::copy(sf::Vector2f vPosition, Drawable & c) :
position{ vPosition },
c{ c }
{}
void copy::draw(sf::RenderWindow & window, sf::Vector2f v){
c.draw(window, v);
}
如果Drawable::draw
是一个没有实现的纯虚拟函数,请添加= 0
:
class Drawable
{
public:
virtual void draw(sf::RenderWindow & window, sf::Vector2f vector) = 0;
};
相关文章:
- 继承函数的重载解析
- 被简单的C++多重继承示例难倒
- 我在C 中写了一个简单的继承程序,但是我有很多错误
- 简单继承实现中的构建错误"expected primary-expression before 'float' "来源
- C++中的简单继承
- C++ 继承简单错误
- 具有继承属性的增强精神解析器 - 简单示例无法编译
- c++编译器错误中的简单类继承
- 在简单继承之后调用复制构造函数
- 错误 LNK2001:未解析的外部符号 -- 我无法获得简单的继承以在C++中工作
- 使用虚继承的简单程序汇编输出
- 简单继承 - 奇怪的编译器错误
- 简单c++继承错误
- 简单的c++ /OOP继承
- 简单继承获得虚值表错误
- 简单的C++继承示例,出了什么问题?
- 理解(简单?)c++继承
- 提振.扩展-简单的继承示例-为什么我们在linux上看不到动物
- 当涉及到简单的派生时,我应该在继承中重写什么
- c++简单程序实现中的继承和虚函数错误