c++ - 错误 : aggregate 'first one' has incomplete type and cannot be defined

标签 c++ codeblocks

我写了这个头文件(header1.h):

#ifndef HEADER1_H
#define HEADER1_H

class first ;

//int summ(int a , int b) ;



#endif

和这个源文件(header1.cpp 和main.cpp):

#include <iostream>
#include "header1.h"

using namespace std;


class first
{
    public:
  int a,b,c;
  int sum(int a , int b);

};

  int first::sum(int a , int b)
{

    return a+b;
}

#include <iostream>
#include "header1.h"


using namespace std;


   first one;

int main()
{
   int j=one.sum(2,4);
    cout <<  j<< endl;
    return 0;
}

但是当我在 codeblocks 中运行这个程序时,我给出了这个错误:

aggregate 'first one' has incomplete type and cannot be defined .

最佳答案

您不能将类声明放在.cpp 文件中。您必须将它放在 .h 文件中,否则编译器看不到它。编译 main.cpp 时,类型“first”是 class first;。这根本没有用,因为这不会告诉编译器任何信息(比如第一个大小是多少,或者什么操作在这种类型上有效)。移动这个 block :

class first
{
public:
    int a,b,c;
    int sum(int a , int b);
};

从 header1.cpp 到 header1.h 并去掉 class first; in header1.h

关于c++ - 错误 : aggregate 'first one' has incomplete type and cannot be defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17799906/

相关文章:

c++ - Win32程序编译但没有窗口出现

c++ - 为什么我的打印功能之一会删除节点?

c++ - 是否需要使用右值引用重复调用 move?

c++ - 如何正确构建 OOP 和多文件项目?

c++ - 如何将 valgrind 与正在运行的进程相关联?

c++ - 解压函数调用的参数数组

c++ - 进程以状态 1 终止

c++ - 无法使用代码块编译 C++ 类

c++ - 如何在 C++ 中将 cin 设置为类的成员函数?

c++ - 为什么我的代码显示错误 undefined reference to `WinMain@16' ?