2016-12-30 1 views
1

클래스에 정적 구조체를 정의했습니다. 하지만 오류로 오류가 발생한다정적 구조체를 초기화하고 사용하는 방법

error LNK1120: 1 unresolved externals

내 헤더 파일

class CornerCapturer{ 
    static struct configValues 
    { 
     int block; 
     int k_size; 
     int thre; 
     double k; 
     configValues() :block(2), k_size(3), thre(200), k(0.04){} 
    }configuration; 
public: 
    void captureCorners(Mat frame); 
} 

내 CPP 파일

void CornerCapturer::captureCorners(Mat frame){ 

    int y= CornerCapturer::configuration.thre; 
} 

당신의 CPP 파일에이 추가 내게

+0

고맙습니다. –

답변

3

도와주세요;

CornerCapturer::configValues CornerCapturer::configuration; 

및 클래스의 둘러싸 };을 잊지 말아 : 인스턴스화 정적 구조.

+1

나를 도와 주셔서 대단히 감사합니다. 방금 그것을 놓쳤습니다. –

0

정적 구성원 변수를 공개해야합니다. 현재이 설정을 사용하여 암시 적으로 구조체를 비공개로 만듭니다. 몇 가지 테스트를 실시했는데 ASH가 말한 바가 정확하다면 전역 범위에서 구조를 인스턴스화해야하지만 개인 멤버를 사용하여 구조를 인스턴스화 할 수는 없습니다. 개인적으로 범위 지정 오류가 발생합니다.

'configuration' is a private member of 'Someclass'

구조체를 public으로 설정 한 후에야 오류없이 컴파일 되었습니까?

#include <iostream> 

class Someclass 
{ 
public:  
    static struct info 
    { 
     int a; 
     int b; 
     int c; 
     info() : a(0), b(0), c(0){} 

    } configuration; 

    void captureCorners(int frame); 
}; 

struct Someclass::info Someclass::configuration; 

void Someclass::captureCorners(int frame) 
{ 
    configuration.c = frame; 
} 

int main() 
{ 
    Someclass firstclass; 
    Someclass secondclass; 

    Someclass::configuration.a = 10; 
    firstclass.configuration.b = 8; 
    secondclass.configuration.c = 3; 

    using namespace std; 


    cout << "First Class a = " << firstclass.configuration.a << "\n"; 
    cout << "First Class b = " << firstclass.configuration.b << "\n"; 
    cout << "First Class c = " << firstclass.configuration.c << "\n"; 

    cout << "Second Class a = " << secondclass.configuration.a << "\n"; 
    cout << "Second Class b = " << secondclass.configuration.b << "\n"; 
    cout << "Second Class c = " << secondclass.configuration.c << "\n"; 

    cout << "Everyclass a = " << Someclass::configuration.a << "\n"; 
    cout << "Everyclass b = " << Someclass::configuration.b << "\n"; 
    cout << "Everyclass c = " << Someclass::configuration.c << "\n"; 

} 
관련 문제