민인학 님이 쓰신 글 :
: struct import_file_info{
: char EdifFile[MAX_SIZE];
: int InstanceID;
: char InstanceName[MAX_SIZE];
: char InterfaceModule[MAX_SIZE];
: int CmdFifoSize;
: int ReadFifoSize;
: int WriteFifoSize;
: int SlaveReadFifoSize;
: int SlaveWriteFifoSize;
: char CLKPort[MAX_SIZE];
: char CLKEdge[MAX_SIZE];
: vector<PortInfo> vData;
: int ProtID;
: int TransatorID;
: };
:
: import_file_info DATA[100];
:
: DATA[0].PortInfo data;
이 문장 자체가 말이 안되는군요. -_-;
import_file_info 타입의 DATA[0] 구조체의 vData 멤버를 억세스하시려면
DATA[0].vData 라고 쓰시면 되고요,
이 vData의 타입은 vector<PortInfo> 입니다.
DATA[0].vData 벡터의 내용을 data라는 벡터에 복사하시려면
vector<PortInfo> data;
data = DATA[0].vData;
로 하면 됩니다.
어차피 vector를 쓰실거면
import_file_info 타입의 배열 대신
vector<import_file_info> DATA;
DATA도 벡터로 쓰시는게 더 좋겠네요.
vector는 배열을 대체할 목적으로 만든거니까요.
: 이런식으로 하니...
: [C++ Error] ImportFile.cpp(552): E2316 'PortInfo' is not a member of 'import_file_info'
: 이런 메세지가 뜨네요...
혹시나 해서 그런데요,
iostream 이나 STL등의 Standard C++ 라이브러리를 쓰실 때는
반드시 네임스페이스 std를 쓰셔야 합니다.
using namespace std;
를 소스 앞에 삽입하세요.
안그러면 매번 std::cout, std::vector
이런 식으로 써야 합니다.
: DATA[x]에 해당하는 PortInfo에 x개의 문자열이 오거든요...
: 그래서 그걸 링크드 리스트로 구현할려고 하다가 vector가 있다길래 써봤습니다...
STL에서 doubly linked list에 해당하는 타입은 list입니다.
list<PortInfo> lData;
이렇게 쓰시면 되죠.
메모리를 절약하기 위해 singly linked list를 쓰시려면 slist를 쓰시면 됩니다.
단, 이건 아직 C++ 표준에는 없습니다.
빌더6에서는 바로 쓸 수 있지만,
빌더5 이하에서는 STLport(
http://www.stlport.org)에서 다운 받으셔서 설치하시면 됩니다.
vector와 list는 님께서 하실 작업의 성격에 따라 필요한 걸 골라서 쓰셔야 합니다.
: 근데.. 에러가 뜨네요... 흑흑~~~
:
: 제발 도와주세요...