Boost logo

Boost Users :

From: Sebastien Gerega (seb_at_[hidden])
Date: 2005-09-02 02:01:48


Can anyone tell me what is wrong with the following code:

#include <iomanip>
#include <iostream>
#include <fstream>
#include <string>

#include <boost/archive/tmpdir.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>

#include <boost/serialization/base_object.hpp>
#include <boost/serialization/utility.hpp>
#include <boost/serialization/list.hpp>
#include <boost/serialization/string.hpp>

*class* ResData{
*friend* *class* boost::serialization::access;
*friend* std::ostream&
*operator*<<(std::ostream &os, const ResData& rD);

*private*:
    std::string resName;
    int seqNum;
    int insNum;
    float sAS;
*public*:
    ResData();
    ResData(std::string, int, int);
    
    std::string getResName() const
                                                { *return* resName;}
    int getSeqNum() const
                                                { *return* seqNum;}
    int getInsNum() const
                                                { *return* insNum;}
    float getSAS() const
                                                { *return* sAS;}
    void setSAS(float sASP)
                                                { sAS = sASP;}
    *template*<*class* Archive>
    void serialize(Archive&, const unsigned int);
};

std::ostream&
*operator*<<(std::ostream& os, const ResData& rD){
    *return* os << rD.getResName() << rD.getSeqNum() << rD.getInsNum() << rD.getSAS();
}

int main(){
    
    std::ofstream oFSBS("/home/Seb/Code/testData/results.dat");
    boost::archive::text_oarchive oA(oFSBS);
    ResData temp("TEST", 1, 1);
    temp.setSAS(5555);
    oA << temp;
    oFSBS.close();
}

I get the following error upon compilation:
/usr/include/boost/archive/detail/oserializer.hpp: In function ‘void
boost::archive::save(Archive&, T&) [with Archive =
boost::archive::text_oarchive, T = ResData]’:
/usr/include/boost/archive/basic_text_oarchive.hpp:78: instantiated from
‘void boost::archive::basic_text_oarchive<Archive>::save_override(T&,
int) [with T = ResData, Archive = boost::archive::text_oarchive]’
/usr/include/boost/archive/detail/interface_oarchive.hpp:85:
instantiated from ‘Archive&
boost::archive::detail::interface_oarchive<Archive>::operator<<(T&)
[with T = ResData, Archive = boost::archive::text_oarchive]’
test.cpp:54: instantiated from here
/usr/include/boost/archive/detail/oserializer.hpp:566: error: invalid
application of ‘sizeof’ to incomplete type
‘boost::STATIC_ASSERTION_FAILURE<false

I am running FC4 with gcc4.0.1
thanks,
Sebastien


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net