小编Seb*_*rst的帖子

C++:错误LNK:由虚函数产生的未解析的外部符号

我界面的类等概述!

Animal.H:

class Animal
{
public:
   virtual void walk();
}
Run Code Online (Sandbox Code Playgroud)

Animals.CPP

=空

Cow.H:

class Cow : public Animal
{
public:
   virtual void walk();
}
Run Code Online (Sandbox Code Playgroud)

在这里它应该从语义上知道函数walk是从它从右派生的类中获取的?(ea Animal ..)当我不定义函数walk时,它应该说我应该正确定义它?

Cow.CPP:

void Cow::walk()
{
   //do something specific for cow
}
Run Code Online (Sandbox Code Playgroud)

SomeOtherClass.H

namespace SomeNamespace
{
   void LetAnimalWalk();
}
Run Code Online (Sandbox Code Playgroud)

SomeOtherClass.CPP

Cow myCow;
namespace SomeNamespace
{
   void LetAnimalWalk()
   {
      myCow.walk();
   }
}
Run Code Online (Sandbox Code Playgroud)

这应该工作正常吗?...我的意思是,命名空间,"Class :: ..."的东西?以及我继承和使用界面的方式?

因为这种方式我得到了我从界面制作的每个功能,所以每个虚函数都给我以下错误:

SomeOtherClass.obj : error LNK2019: unresolved external symbol "public: virtual void __thiscall Cow::Walk (...etc etc...) referenced in function "void __cdecl SomeNamespace::LetAnimalWalk() …
Run Code Online (Sandbox Code Playgroud)

c++ virtual interface lnk2019

8
推荐指数
2
解决办法
2万
查看次数

在头文件中定义并在cpp中实现的C++结构

当我在另一个类中使用它时,我如何确保我实现的某些颜色保持其价值?

struct.h

struct Color{
   unsigned char r;
   unsigned char g;
   unsigned char b;
};
Color someColor;
//if i define the color here it says...:
Color someColor = {255,255,255}; //error: data member inializer not allowed
Run Code Online (Sandbox Code Playgroud)

struct.cpp

struct::Color someColor = {255,255,255};
Run Code Online (Sandbox Code Playgroud)

someotherclass.cpp

struct *str = new struct();
str->someColor.r //is not the correct value /not set
Run Code Online (Sandbox Code Playgroud)

c++ implementation struct

4
推荐指数
1
解决办法
2万
查看次数

要转换为string的类属性的名称

我无休止地搜索了一个线程,它确切地说明了我的问题,但我找不到它.

我想获取一个类属性,并将该属性作为字符串取出!

public class Foo
{
   public Foo ()
   {
   }
   public int MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我想最后得到字符串"MyProperty",如下所示:

Foo f = new Foo();
string s = Helperfunction(f.MyProperty);

string Helperfunction(  X  )
{
   string MyString;
   //do something with X
   return MyString;
}
Run Code Online (Sandbox Code Playgroud)

通过可能的辅助功能来实现这有多困难?所以输出应该是"MyProperty"

因为我不想对它进行硬编码,并且只要我重构属性名称,它就可以在不编辑硬编码字符串的情况下工作!

c# string properties

2
推荐指数
1
解决办法
112
查看次数

标签 统计

c++ ×2

c# ×1

implementation ×1

interface ×1

lnk2019 ×1

properties ×1

string ×1

struct ×1

virtual ×1