C++:对“NameSpace::Class::Constructor”的未定义引用

C++: Undefined reference to 'NameSpace::Class::Constructor'

提问人:SnowArtz 提问时间:4/14/2021 更新时间:4/14/2021 访问量:330

问:

我从 C++ 开始,我正在尝试创建一个类程序,但是,当我尝试运行时出现错误:C++:未定义对“NameSpace::Class::Constructor”的引用。代码如下图所示:

ClassA 的标头:

//ClassA.h
#ifndef CLASSA_H 
#define CLASSA_H
#include <string>

namespace ClassANameSpace
{
    class ClassA
    {
    private:
        std::string attribute1;
        double attribute2;

    public:
        ClassA();
        ClassA(std::string pAttribute1, double pAttribute2);

        void setClassA(std::string pAttribute1, double pAttribute2);
        
        std::string getAttribute1() { return attribute1; }
        double getAttribute2() { return attribute2; }

    };
}

#endif 

A类:

//ClassA.cpp
#include "ClassA.h"
using namespace ClassANameSpace;

ClassA::ClassA()
{

}

ClassA::ClassA(std::string pAttribute1, double pAttribute2)
{
    setClassA(pAttribute1, pAttribute2);
}

void ClassA::setClassA(std::string pAttribute1, double pAttribute2)
{
    attribute1 = pAttribute1;
    attribute2 = pAttribute2;
}

主要:

// main.cpp
#include <iostream>
#include "ClassA.h"
using namespace std;
using namespace ClassANameSpace;

int main(int argc, char const *argv[])
{
    ClassA classA ("string", 1.0);
    return 0;
}

当我尝试运行时,它出现:对“ClassANameSpace::ClassA::ClassA(std::__cxx11::basic_string<char, std::char_traits, std::allocator >, double)' 的未定义引用

有人可以指导我去了解发生了什么?

C++ undefined-reference

评论

1赞 Yksisarvinen 4/14/2021
请展示你是如何编译你的代码的。
2赞 Yksisarvinen 4/14/2021
题外话,但是如果您在每个文件中废除命名空间,那么添加命名空间有什么意义?using namespace
0赞 Stephen Newell 4/14/2021
这回答了你的问题吗?什么是未定义的引用/未解析的外部符号错误,如何解决?
1赞 Patrick 4/15/2021
你是如何编译的?我只是尝试了:它编译并运行良好。g++ -std=c++11 main.cpp ClassA.cpp
0赞 SnowArtz 4/15/2021
我正在使用 Visual Studio Code,我不知道如何正确编译它,但是,现在我正在尝试使用代码块并且它可以工作。有人知道在哪里可以找到在 VSC 中编译的正确方法吗?谢谢!

答: 暂无答案