클래스에 대한 헤더 파일을 만들고 main.cpp에 "theclassname.h"를 # 포함했지만 컴파일하려고하면 "정의되지 않은 참조"를 얻습니다 ClassName :: TheConstructor (bool, int * , std :: basic_string, std :: allocator>) ""메인 C++의 클래스 문제
내 Classname.cpp 파일 안에 "ClassName :: start"라는 함수를 생성자로 코딩했지만 어떤 이유로이 정의되지 않은 참조 문제가 발생했습니다 이 시작 함수와 내 cpp 파일에 코딩되어있는 소멸자에 대해서. 헤더 파일 내부에 코딩 된 함수에 대한 기본 호출은이 오류를 발생시키지 않지만 내 .cpp 파일에 코딩 된 함수에 대한 모든 호출은이 호출을 트리거합니다.
나는 이것에 관해 많은 게시물을 보았지만 올바른 매개 변수와 반환 형식으로 올바르게 코딩했으며 함수 이름이 헤더 파일에 정의 된 것과 동일해야합니다. 10 번 이상 확인했기 때문에 그 밖의 원인으로 뭔가를 잘못 입력하는 것일 수 있습니다.
감사
#ifndef THECLASSNAME_H
#define THECLASSNAME_H
#include <iostream>
class TheClassName {
public:
TheClassName(bool theBool=true, int *theArray=0,
std::string message="-1");
~TheClassName();
void start();
void setBool(bool theBool) {aBool=theBool;}
bool getBool() {return aBool;}
void setMessage(std::string message) {mssg=message;}
std::string getMessage() {return mssg;}
std::string getHello() {return hello;}
private:
int *anArray;
bool aBool;
std::string mssg;
std::string hello;
void aFunction1(bool);
void aFunction2();
void aFunction3();
void aFunction4();
};
#endif
죄송합니다 모두들 그냥 고정! 내 메이크 파일에서 나는
exec1: main.o classname.o
g++ -o exec1 main.o
대신
exec1: main.o classname.o
g++ -o exec1 main.o classname.o
너무 많은 너희들을 감사했다!
코드를 설명하기보다는 코드 (또는 적어도 코드의 단순화 된 대표 버전)를 게시해야합니다. –
.cpp 파일이 프로젝트의 일부가 아닌 것처럼 들립니다. 프로젝트에 추가하면 컴파일러와 링커에서 함수 정의를 찾습니다. – tmpearce
이전 질문을 수정/편집해야한다고 생각합니다. (http://stackoverflow.com/questions/10386144/constructor-parameter-issue-c) –