为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我会报不允许成员函数重新申明?

代码如下:

teacher.cpp的代码:

#include<iostream>
#include<string>
#include"teacher.h"

using namespace std;

void teacher::setName(string name)
{m_strName=name;}
string teacher::getName()
{return m_strName;}

void teacher::setAge(int age)
{m_iAge=age;}
int teacher::getAge()
{return m_iAge;}

teacher::teacher(){
   m_strName="jim";
   m_iAge=114;
   cout<<"teacher()"<<endl;
 
}
teacher::teacher(string name,int age);
int main(){

 teacher t;
 t.setName("kongzi");
 cout<<t.getName()<<endl;
 t.setAge(111);
 cout<<t.getAge()<<endl;

 system("pause");
 return 0;

}

这是·teacher.h的代码:

#include<string>

using namespace std;
class teacher{

   public:
    teacher();
    teacher(string name,int age);
    void setName(string name);
    string getName();
    void setAge(int age);
    int getAge();
   private:
    string(m_strName);
    int(m_iAge);

};

这是demo.cpp的代码:

#include<iostream>
#include<string>
#include"teacher.h"

using namespace std;

int main(void){
 teacher t1;
 teacher t2("merry", 12);
    cout<<t1.getName()<<t1.getAge()<<endl;
 cout<<t2.getName()<<t2.getAge()<<endl;
}

按照这样的代码运行会报如下错误:1>d:\vs 2010\project\test8\test8\teacher.cpp(23): error C2761: “{ctor}”: 不允许成员函数重新声明

 

就是不知道怎么解决,老师不也在teacher.cpp里面定义了两个构造函数吗?有参和无参,怎么我这里定义会显示是重新申明了?表示不懂

正在回答

1 回答

不好意思,是在teacher.cpp里面把定义teacher::teacher()函数变成了申明,不应该后面加分号,但是我改成定义,去掉分号后,怎么又变成了1>D:\vs 2010\project\test8\Debug\test8.exe : fatal error LNK1169: 找到一个或多个多重定义的符号,又报这个错误了,

 

 

teacher::teacher(){
   m_strName="jim";
   m_iAge=114;
   cout<<"teacher()"<<endl;
 
}
teacher::teacher(string name,int age){
  m_strName=name;
  m_iAge=age; 
}

主要就是这段代码的问题

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103410    人
  • 解答问题       701    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

为什么我会报不允许成员函数重新申明?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信