У меня есть небольшая проблема с упражнением. У меня есть 2 классов:Абстрактные функции
Первое:
namespace Abstract{
class AbstractClass{
public:
virtual void setName(const std::string & _name) =0;
virtual void print() =0;
void DynamicCastTest(){};
};
}
второе:
class ConcreteClass : public Abstract::AbstractClass{
std::string type;
public:
ConcreteClass();
ConcreteClass(const char* a);
~ConcreteClass();
static Abstract::AbstractClass* CreateConcreteClass(const char* a);
virtual void setName(const std::string & _name);
virtual void print();
};
И СРР файл второго класса:
#include "concreteClass.h"
ConcreteClass::ConcreteClass(){
type = "";
}
ConcreteClass::ConcreteClass(const char* a){
type = a;
}
ConcreteClass::~ConcreteClass(){}
static ConcreteClass* CreateConcreteClass(const char* a){
return new ConcreteClass(a);
}
void ConcreteClass::setName(const std::string & _name){
type = _name;
}
void ConcreteClass::print(){
std::cout<<type<<std::endl;
}
Но в моей основной, когда я звоню:
const char* s = "";
Abstract::AbstractClass* a = ConcreteClass::CreateConcreteClass(s);
В компиляции, Visual вне меня LNK2019 ошибка:
? "Общественность: статический класс ConcreteClass * __cdecl ConcreteClass :: CreateConcreteClass (символ сопз *)" (CreateConcreteClass @ ConcreteClass @@ SAPAV1 @ PBD @ Z)
на этой последней строке. Зачем ?
Неверное название: это код на C++, а не C! И, пожалуйста, покажите полное сообщение об ошибке. –
Что означает «символ», на который указывает ошибка? –
Отредактировано с полным кодом ошибки – Apaachee