对类::类/函数的未定义引用(OOP中的初学者)

时间:2018-04-30 12:57:02

标签: c++ function class object undefined

我有这个恼人的错误; 对Shape :: Shape(...),Shape :: getName(...),Shape :: getAge(...)的未定义引用

我的Main.cpp是这个

account/logout

这是Bit.h标头

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

using namespace std;

int main()
{
    //simple assignment
    string name;
    int age;
    cout<<"enter name: ";
    cin>>name;
    cout<<"enter age: ";
    cin>>age;

    Shape sh(name,age); //class declaration (i think here is the problem)

    cout<<endl<<"name: "<<sh.getName();
    cout<<endl<<"age: "<<sh.getAge();




    return 0;
}

最后,这是Bit.cpp

#include <iostream>
#include <string>

using namespace std;

#ifndef BIT_H
#define BIT_H

 //creating class
class Shape{
    string newName;
    int newAge;

public:
    //Default Constructor
    Shape();
    //Overload Constructor
    Shape(string n,int a);
    //Destructor
    ~Shape();
    //Accessor Functions
    string getName();
    int getAge();

};

我明白,这可能是一个非常简单的问题/错误,但我已经挣扎了大约2个小时。 我想错误是在声明od&#34; sh&#34;对象,即使我声明它是这样的&#34; Shape sh();&#34;或&#34;形状sh;&#34;,仍有错误。 感谢

EDIT。 GNU GCC编译器 EDIT2。使用代码块(抱歉忘记所有这些)

1 个答案:

答案 0 :(得分:2)

您可能没有编译Bit.cpp,只能编译Main.cpp

考虑到Bit.hBit.cppMain.cpp位于同一文件夹中,以下是编译方式:

g++ *.cpp

它仍然无法编译,因为在默认构造函数中,您尝试初始化nameage两者都不存在。

您可能需要newAgenewName

在其他构造函数中,nameage也不存在,您可能意味着na