【问题标题】:C++ “undefined reference to“ in main method [duplicate]主要方法中的C ++“未定义引用”[重复]
【发布时间】:2021-01-28 10:58:12
【问题描述】:

它看起来很基本,可能是由于初学者的错误,但我不知道为什么......

编译时,我从 int main() 收到如下错误: “对 'Hello::World::PaintService::PaintService() 的未定义引用”

paint.cpp

using namespace Hello;
int main(int argc, char **argv) {
    World::PaintService service;
     service.start_painting(argc[1]);

}

PaintService 和 start_painting 定义如下:

paint_service.h

namespace Hello {
namespace World {
    class PaintService {
        public:
            PaintService();
            void start_painting(...);
}; } }

paint_service.cpp

namespace Hello { 
namespace World {
    void start_painting(....) {
        ... //paint
    }
} }

在调用 PaintService 服务后,在另一个类中调用 service.start_paint() 之类的 start 方法似乎很简单,但出现了问题。我尝试了很多变化,但无法弄清楚:-/ 有人能指出我做错了什么吗?

谢谢!

【问题讨论】:

  • 您的paint.cpppaint_service.cpp 中是否有您没有提及的#include "paint_service.h"
  • 编辑 argc[1] 到 argv[1]
  • 相关答案:stackoverflow.com/a/12574407/962089this answer 也可能与您的构造函数相关。
  • @nathan pierson 是的,他们都将paint_service.h 作为标题。
  • @whoami 打错字了!谢谢!

标签: c++ function class namespaces


【解决方案1】:

要声明一个方法,你需要包含类的名称。

namespace Hello {
namespace World {

void PaintService::start_painting(....) { ... }
void PaintService::PaintService() { ... }

}  // namespace World
}  // namespace Hello

https://repl.it/repls/PunySaneSpools#main.cpp

【讨论】:

  • 非常感谢!!!这做到了!!!但由于某种原因,我不得不从头文件和 cpp 文件中取出构造函数 (PaintService();)...
猜你喜欢
  • 1970-01-01
  • 2013-02-01
  • 2014-02-07
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 2010-11-09
  • 2014-06-04
相关资源
最近更新 更多