Tôi cố gắng để biên dịch 2 lớp trong C++ với lệnh sau đây:Biến C++ có bộ khởi tạo nhưng không đầy đủ?
g++ Cat.cpp Cat_main.cpp -o Cat
Nhưng tôi nhận được lỗi sau:
Cat_main.cpp:10:10: error: variable ‘Cat Joey’ has initializer but incomplete type
Có thể ai đó giải thích cho tôi điều này có nghĩa? Những gì các tập tin của tôi về cơ bản làm là tạo một lớp (Cat.cpp
) và tạo một cá thể (Cat_main.cpp
). Đây là mã của tôi nguồn:
Cat.cpp:
#include <iostream>
#include <string>
class Cat;
using namespace std;
int main()
{
Cat Joey("Joey");
Joey.Meow();
return 0;
}
Cat_main.cpp:
#include <iostream>
#include <string>
using namespace std;
class Cat
{
public:
Cat(string str);
// Variables
string name;
// Functions
void Meow();
};
Cat::Cat(string str)
{
this->name = str;
}
void Cat::Meow()
{
cout << "Meow!" << endl;
return;
}
Bạn không thể khai báo đối tượng cho các lớp có định nghĩa chưa được hiển thị. – iammilind
Tôi làm cách nào để hiển thị? –
@Ken: Bạn phải bao gồm tệp tiêu đề. –