- - PR -
cygwinとUnixのコンパイルの違い
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-11-30 01:32
こんにちは。
UNIXのソースをWindows上でビルドできるようにしています。 Windows上では、cygwinのコンパイラを使用しています。 下記コードがコンパイルが通らず悩んでいます。 vector<TestCls>:: iterator it = &array[2] ; iteratorのitに、arrayの動的配列2番目のアドレスを参照渡し?しています。 UNIXでは、ビルドと動作は確認できたのですが、 CYGWINでは、ビルドができませんでした。 ビルドオプションなど、足りないものがあるのでしょうか? 下記サンプルソースを置きます。 ##################################### ☆☆☆TestCls.h☆☆☆ #ifndef TESTCLS_H_ #define TESTCLS_H_ class TestCls { private: int age ; public : TestCls() ; virtual ~TestCls() ; void setAge(int ax) { age = ax ;} int getAge() { return age ; } } ; #endif /*TESTCLS_H_*/ ##################################### ☆☆☆TestCls.cpp☆☆☆ #include "TestCls.h" TestCls::TestCls() {} TestCls::~TestCls() {} ##################################### ☆☆☆testmain.cpp☆☆☆ #include<vector> #include<iostream> #include "TestCls.h" int main() { using namespace std ; vector<TestCls> array ; int i; for(i=0; i<10; i++) { TestCls clstestCls ; clstestCls.setAge(i+10) ; array.push_back(clstestCls) ; } vector<TestCls>::iterator it = &array[2] ; // ←ここでエラー発生。 while(it != array.end()) { cout << it->getAge() << endl ; ++it ; } return 0 ; } ##################################### ビルドオプションは、 g++ -I"c:\\~~\\inc" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/testmain.d" -MT"src/testmain.d" -o"src/testmain.o" "../src/testmain.cpp" エラーメッセージは、 error: conversion from `TestCls*' to non-scalar type `__gnu_cxx::__normal_iterator<TestCls*, std::vector<TestCls, std::allocator<TestCls> > >' requested |
|
投稿日時: 2007-11-30 11:14
ここが参考になるかもしれません。 [ メッセージ編集済み 編集者: ひで 編集日時 2007-11-30 11:39 ] |
|
投稿日時: 2007-12-01 12:16
ひでさん。
回答ありがとうございます。 提示して頂いたURLを参考にします。 |
1