c++ vector练习程序编译有错误

#include<iostream>#include<vector>usingnamespacestd;classA{public:inta;intb;intc;A();... #include<iostream>
#include<vector>
using namespace std;
class A
{
public:
int a;
int b;
int c;
A();
void fn()
{cout<<a<<" "<<b<<" "<<c<<" "<<endl;}
};
A::A()
{
a=0;
b=0;
c=0;
}
template<class A>
void main()
{

vector<A> va(3);
vector::iterator it=va.begin();
int i=1;
for(vector<A>::size_type ix=0;ix!=3;++ix)
{
(*it).a=i;(*it).b=i+1;(*it).c=i+2;
cout<<(*it).fn();
}
}
本人初学者,我就是想试试vector里面如何使用类对象的成员和成员函数。。。。 但是能编译,不能链接
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/1.exe : fatal error LNK1120: 1 unresolved externals
展开
 我来答
吾好梦中殺猪
2013-05-18 · TA获得超过335个赞
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:324万
展开全部
首先,本人也是C++一菜鸟。谈下我的看法:
这个错误的根本原因我认为是你的函数模板定义引起的
template<class A>
void main()
{……}
// 这里,你定义了个模板,我们知道,函数模板的定义形式为:
Template <class或者也可以用typenameT>
返回类型 函数名(形参表)
{//函数定义体 }

显然,main()函数成为了你函数模板的一部分,因而link时出错。再深层次的原因有待高手解答。
对你的程序我做了如下几处改动,运行无问题。

//template<class A> // 第1处
int main(int argc, char** argv)
{

vector<A> va(3);
vector<A>::iterator it=va.begin(); // 第2处
int i=1;
for(vector<A>::size_type ix=0;ix!=3;++ix)
{
(*it).a=i;
(*it).b=i+1;
(*it).c=i+2;
(*it).fn(); // 第3处
}
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式