프로그램을 컴파일하려고 할 때 (아래 부분 참조) "fraction :: from_string (char const *)에 대한 정의되지 않은 참조"오류가 발생합니다. 문자열을 C 스타일 문자열로 변환하는 데 문제가 있다고 의심되지만 해결할 수없는 것 같습니다. 오류가 발생하는 생성자 밖에 from_string 함수를 호출 할 수 있지만 생성자에서 코드를 활성화하려고하면이 오류가 발생합니다.g ++ 일부 함수에 대한 정의되지 않은 참조
여기 내 코드입니다. 예, 표준에 이미 "비율"또는 비슷한 대상이 있다고 생각합니다. 문제와 관련이 없습니다. 파일 fraction.h에서
:
…
class fraction {
public:
…
fraction();
fraction(int a);
fraction(int a, int b, bool red);
fraction(string inStr, bool red);
…
static fraction from_string(const char* raw);
…
}
파일 fraction_imp.h의 :
#include "fraction.h"
…
fraction from_string(const char* raw)
{
// omitted for brevity. Parses the string to extract a numerator
// and denominator for the fraction object
}
…
fraction::fraction(string inStr, bool red = false) : auto_reduce(red)
{
char* raw = const_cast<char*>(inStr.c_str());
fraction t = from_string(cRaw);
numer = t.numer; denom = t.denom;
}
내가 컴파일러에서 다음과 같은 오류가
:
------- ------- 빌드 : 분수 (컴파일러 : MinGW-w64/GNU GCC 4.9.0 컴파일러) ---------------
x86_64-w64-mingw3 2-g ++ -Wall -fexceptions -g -std = C++ 11 -c C : \ cpp \ fraction \ main.cpp -o obj \ D \ main.o x86_64-w64-mingw32-g ++ -o bin \ D \ rational.exe obj \ D \ main.o
obj \ D \ main.o의 경우 fraction::fraction(std::string, bool)': C:/cpp/fraction/fraction_imp.h:84: undefined reference to
fraction :: from_string (char const *) ' collect2.exe : 오류 : ld가 1을 반환했습니다. 종료 상태 상태 1 (0 분, 2 초) 1 개의 오류, 1 개의 경고 (0 분), 2 초
작업 할 함수 호출을 얻는 방법 ... 한 번에 생성자는 다음과 같이 보입니다.
fraction::fraction(string inStr, bool red = false) : auto_reduce(red)
{
char* raw = new char[inStr.size() + 1];
copy(inStr.begin(), inStr.end(), raw);
raw[inStr.size()] = '\0';
char cRaw[50];
strcpy(cRaw, raw);
fraction t = from_string(cRaw);
numer = t.numer; denom = t.denom;
}
하지만 아직 운이 없습니다. 오류가 undefined reference to fraction::from_string(char const*)
을 보여주기 때문에 내가 계속 사용하는 유형이 상수 문자에 대한 포인터가 아닌 포인터에 대한 상수 포인터인지 확실하지 않았습니다 ...? 또는 fraction
생성자 내에 임시 fraction
개체를 생성했기 때문에이 작업을 수행 할 수 있습니까?
그래를 내는 from_string 함수에 인수 하구와 클래스 메소드에 앞뒤로 정적에서 그것을 전환 사이에, 나는 구현 파일에서, 분명히 선언 파일에서 정적 및 글로벌 IT 왼쪽 . 눈의 두 번째 세트를 가져 주셔서 감사합니다 ...이 날 이틀 동안 미치게되었습니다. – oweinh