C++: multiple definition...?
Hallo, ich habe in C++ einen Header erstellt, aber bei der Complierung kommt immer diese Fehlermeldung:
C:\Users\Admin\AppData\Local\Temp\ccdaLGOT.o:lexer.cpp:(.text+0x111): undefined reference to `Token::content[abi:cxx11]() const'
...(Zu lang zum abschicken)
collect2.exe: error: ld returned 1 exit status
Kann mir jemand sagen was der Fehler ist und wie ich ihn behebe?
token.hpp:
#ifndef TOKEN_HPP_
#define TOKEN_HPP_
#include <string>
class Token {
public:
enum class Type {
STRING,
NUMBER,
BOOLEAN,
IDENTIFIER,
EQUAL,
PLUS,
MINUS,
TIMES,
DIVIDE,
LESS_THAN,
GREATER_THAN,
COMMENT,
DOT,
COMMA,
SEMICOLON,
CURLY_BRACKET_RIGHT,
CURLY_BRACKET_LEFT,
APOSTROPHE,
COLON,
UNEXPECTED
};
Token (Type type) noexcept;
Type type () const noexcept;
bool is (Type type) const noexcept;
bool is_not (Type type) const noexcept;
std::string content () const noexcept;
void change_content (std::string content) const noexcept;
void add_to_content (std::string content) const noexcept;
void clear_content () const noexcept;
void change_type (Type type) const noexcept;
private:
Type m_type;
std::string m_content;
};
#endif
token.cpp:
#include "token.hpp"
#include <string>
Token::Token(Type type) noexcept : m_type{type} {};
Token::Type Token::type() const noexcept {
return m_type;
}
bool Token::is(Type type) const noexcept {
return m_type == type;
}
bool Token::is_not(Type type) const noexcept {
return m_type != type;
}
std::string Token::content() const noexcept {
return m_content;
}
void Token::change_content(std::string content) const noexcept {
m_content = content;
}
void Token::add_to_content(std::string content) const noexcept {
m_content = m_content + content;
}
void Token::clear_content() const noexcept {
m_content.clear(); //Die clear Funktion geht auch nicht
}
void Token::change_type(Type type) const noexcept {
m_type = type;
}
Ich hoffe jemand kann mir dabei helfen!
LG
1 Antwort
Vom Beitragsersteller als hilfreich ausgezeichnet
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, programmieren, Cplusplus
Deine Dateien sehen soweit in Ordnung aus, aber evtl. geht beim linken etwas schief?
Ich würde zudem einmal schauen ob es mit
#pragma once
geht, einfach auf gut Glück, obwohl es so ja auch gehen sollte, wie du es hast.
Danke für die Antwort, mitlerweile hat sich bei meinem Problem etwas geändert, ich stelle dafür gleich eine neue Frage