我有这个恼人的错误; 对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。使用代码块(抱歉忘记所有这些)
答案 0 :(得分:2)
您可能没有编译Bit.cpp
,只能编译Main.cpp
。
考虑到Bit.h
,Bit.cpp
和Main.cpp
位于同一文件夹中,以下是编译方式:
g++ *.cpp
它仍然无法编译,因为在默认构造函数中,您尝试初始化name
和age
两者都不存在。
您可能需要newAge
和newName
?
在其他构造函数中,name
和age
也不存在,您可能意味着n
和a
?