0

新しいプロジェクトを開始したばかりですが、クラス スケルトンがコンパイルされません。私が受け取っているコンパイラエラーは次のとおりです。

Undefined symbols for architecture x86_64:
  "SQLComm::ip", referenced from:
      SQLComm::SQLComm(int, std::__1::basic_string<char, std::__1::char_traits<char>,     std::__1::allocator<char> >) in SQLComm.o
  "SQLComm::port", referenced from:
  SQLComm::SQLComm(int, std::__1::basic_string<char, std::__1::char_traits<char>,     std::__1::allocator<char> >) in SQLComm.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

コードがコンパイルされない理由がわかりません...エラーが発生するクラスは次のとおりです。

SQLComm.h:

#ifndef __WhisperServer__SQLComm__
#define __WhisperServer__SQLComm__

#include <iostream>
#include <string>

class SQLComm {
public:
//Local vars
static int port;
static std::string ip;

//Public functions
void connect();
SQLComm(int sqlport, std::string sqlip);
~SQLComm();
private:

};



#endif /* defined(__WhisperServer__SQLComm__) */

SQLComm.cpp は次のとおりです。

#include "SQLComm.h"


SQLComm::SQLComm(int sqlport, std::string sqlip){
ip = sqlip;
port = sqlport;
}

SQLComm::~SQLComm(){

}

void SQLComm::connect(){

}

システムはOSX10.9、コンパイラはGCC(xCode)です。

このエラーが発生する理由を誰かに教えてもらえれば、とてもうれしいです。前もって感謝します!:)

4

2 に答える 2

2

静的クラス変数を定義する必要があります。試す

int SQLComm::port;
std::string SQLComm::ip;

SQLComm.cpp で。

注: ほとんどの場合、両方の変数を静的クラス変数として宣言するのではなく、通常のインスタンス変数として宣言する必要があります。

于 2013-11-14T21:34:07.643 に答える