【问题标题】:C++ name followed by '::' must be a class or namespace name [closed]C ++名称后跟'::'必须是类或命名空间名称[关闭]
【发布时间】:2019-06-20 09:13:22
【问题描述】:

所以我搜索了一些解决方案,但没有找到任何解决方案。我想在他们的 cpp 文件中定义我的方法,但即使我包含他们的 .h 文件,编译器也无法识别我的任何类及其属性。这是我的代码的一部分:

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

using namespace std;

Table Table::Table()
{
    capacite_ = MAXCAP;
    id_ = -1;
    nbPlaces_ = 1;
    occupee_ = false;
    commande_ = MAXCAP;
}
Table Table::Table(int id, int nbPlaces)
{
    id_ = id;
    nbPlaces_ = nbPlaces;
}
int Table::getId()
{
    return id_;
}

希望你能帮帮我,谢谢

【问题讨论】:

    标签: c++ class methods


    【解决方案1】:

    构造函数没有返回类型:

    struct Table {
      Table();
    };
    
    Table::Table() {
      // ...
    }
    

    【讨论】:

      【解决方案2】:

      我假设你的头文件是这样的

      
      #define MAXCAP (100)
      class Table {
      
      public:
        Table();
        Table(int id, int nbPlaces);
        ~Table() {}
      
        int getId();
      
      private:
        int nbPlaces_;
        int id_;
        bool occupee_;
        int commande_;
        int capacite_;
      };
      
      

      在您的 cpp 文件中尝试以下代码,这应该可以解决问题

      #include "Table.h"
      #include <iostream>
      
      using namespace std;
      
      Table::Table() {
        capacite_ = MAXCAP;
        id_ = -1;
        nbPlaces_ = 1;
        occupee_ = false;
        commande_ = MAXCAP;
      }
      
      Table::Table(int id, int nbPlaces) {
        id_ = id;
        nbPlaces_ = nbPlaces;
      }
      
      int Table::getId() { return id_; }
      
      int main() { return 0; }
      
      

      【讨论】:

      • 你应该已经解释了代码的问题。然而,它已经得到了充分的回答。我不确定新的答案会有多大帮助。
      • 嗨,很遗憾我已经尝试过了。它仍然无法识别类表,但我不知道为什么
      • 你检查过你的头文件中的ifdef标志吗?
      • 仍然无法识别类表,但我不知道为什么这应该是一个新问题(因为这个问题已正确回答) 使用此答案中的固定代码。在新问题中确保包含标题和您遇到的任何错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-02
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      相关资源
      最近更新 更多