C ++字符串覆盖链接错误

时间:2011-04-21 17:51:23

标签: c++ string linker override

  

可能重复:
  How to resolve “LINK : fatal error LNK1561: entry point must be defined”?

我有类A和B这样,在链接时出现错误:错误LNK1561:必须定义入口点。我做错了什么?

#include <string>
#include <cstdlib>

class A 
{
public:
A(){}
~A(){}
string getName()
{ return name; }
void setName(string name)
{this->name = name;}
void write()
{
   cout << "Value:" << getName() << endl;
}
protected:
string name;
};

#include <string>
#include "A.h"
class B : public A
{
public:
B()
{
setName("B");
}
~B(){}
};

#include "A.h"
#include "B.h"
#include <cstdlib>

int main()
{
B abc = B();
abc.write();

system("PAUSE");
return 0;
 }

我收到以下错误:

错误C2039:'name':不是'A'的成员 错误C2061:语法错误:标识符'字符串'
错误C2065:'cout':未声明的标识符
错误C2065:'endl':未声明的标识符
错误C2065:'name':未声明的标识符
错误C2146:语法错误:缺少';'在标识符'getName'之前 错误C2146:语法错误:缺少';'在标识符'name'之前 错误C2660:'A :: setName':函数不带1个参数
错误C4430:缺少类型说明符 - 假定为int。注意:C ++不支持default-int

5 个答案:

答案 0 :(得分:2)

如果就是这样,那么就没有定义int main(),所以它们不能从中调用代码,也没有地方可以启动。

答案 1 :(得分:2)

您需要声明应用程序的入口点,通常是:

int main()
{
 // code to declare an A and B object
}

答案 2 :(得分:2)

好吧,你没有向我们展示命令,但是如果你要链接来创建一个可执行文件(而不是一个dll),你必须定义一个函数main;这是运行时启动可执行文件时调用的内容。

答案 3 :(得分:0)

你没有写main()函数。

答案 4 :(得分:0)

您似乎没有main方法,这是您的计划的切入点。