Reading .las file into C++












0















I'm fairly new at C++, but I'm trying to read in a .las file. I'm sort of following this youtube video, but I'm still having some issues reading in the file.



I'm getting several errors:



error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
candidate is: void PointCloud::read(const string&)|
expected declaration before '}' token|
error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
error: candidate is: void PointCloud::read(const string&)|
error: expected declaration before '}' token|


Code:



#ifndef POINTCLOUD_H
#define POINTCLOUD_H
#include <stdint.h>
#include <string>

class PointCloud
{

public:
PointCloud(const std::string &path);

private:
struct Header
{
char magic[4];
uint16_t fileSourceID;
uint16_t globalEncoding;
uint32_t guidData1;
uint16_t guidData2;
uint16_t guidData3;
uint8_t guidData4;
uint8_t versionMaj, versionMin;
char systemIdentifier[32];
char genSoftware[32];
uint16_t creationDay, creationYear;
uint16_t headerSize;
uint32_t pointDataOffset;
uint32_t numVarLenRecords;
char pointDataFormat;
uint16_t pointDataRecordLen;
uint32_t pointRecordNum;
uint32_t pointReturnNum[5];
double scaleX, scaleY, scaleZ;
double offX, offY, offZ;
double maxX, maxY, maxZ;
double minX, minY, minZ;
};
void read(const std::string &path);

};

#endif //POINTCLOUD_H

#include "PointCloud.h"
#include <iostream>
#include <stdexcept>
#include <fstream>>

using namespace std;
PointCloud::read(const string &path)
{
ifstream inf(path, ios::binary);
if(inf.is_open())
{
Header header;
inf.read((char *))&header, sizeof(header));
cout << header.versionMaj << "," << header.versionMin << endl;
}
else
{
cout << "Error: No file found" << endl;
}
}
}


I'm not sure why it is complaining about the prototype I think I have everything right in the header. Also all the variables in the header struct come from this link.



Any help would be greatly appreciated.
Thanks










share|improve this question

























  • You're missing the return type from the PointCloud::read definition. And you have unmatched braces; I think there is a closing brace (}) too much at the bottom.

    – ravnsgaard
    Nov 21 '18 at 22:55













  • @ravnsgaard, do I still need to specify a return type even though it's void?

    – p0ps1c1e
    Nov 22 '18 at 2:12











  • Yes, you do. You're running into an ancient rule in the system (inherited from C) that makes anything not explicitly declared an int. Your compiler should have more to say about this... What compiler are you using? What version?

    – ravnsgaard
    Nov 22 '18 at 12:36











  • I'm running GCC im not sure the version as I'm on Windows and its kind of a pain to check

    – p0ps1c1e
    Nov 22 '18 at 18:15






  • 1





    You're not returning anything. So, the return type should be void. It already is in your declaration, but there's no return type on your definition. This mismatch is what the compiler's complaining about.

    – ravnsgaard
    Nov 22 '18 at 19:07
















0















I'm fairly new at C++, but I'm trying to read in a .las file. I'm sort of following this youtube video, but I'm still having some issues reading in the file.



I'm getting several errors:



error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
candidate is: void PointCloud::read(const string&)|
expected declaration before '}' token|
error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
error: candidate is: void PointCloud::read(const string&)|
error: expected declaration before '}' token|


Code:



#ifndef POINTCLOUD_H
#define POINTCLOUD_H
#include <stdint.h>
#include <string>

class PointCloud
{

public:
PointCloud(const std::string &path);

private:
struct Header
{
char magic[4];
uint16_t fileSourceID;
uint16_t globalEncoding;
uint32_t guidData1;
uint16_t guidData2;
uint16_t guidData3;
uint8_t guidData4;
uint8_t versionMaj, versionMin;
char systemIdentifier[32];
char genSoftware[32];
uint16_t creationDay, creationYear;
uint16_t headerSize;
uint32_t pointDataOffset;
uint32_t numVarLenRecords;
char pointDataFormat;
uint16_t pointDataRecordLen;
uint32_t pointRecordNum;
uint32_t pointReturnNum[5];
double scaleX, scaleY, scaleZ;
double offX, offY, offZ;
double maxX, maxY, maxZ;
double minX, minY, minZ;
};
void read(const std::string &path);

};

#endif //POINTCLOUD_H

#include "PointCloud.h"
#include <iostream>
#include <stdexcept>
#include <fstream>>

using namespace std;
PointCloud::read(const string &path)
{
ifstream inf(path, ios::binary);
if(inf.is_open())
{
Header header;
inf.read((char *))&header, sizeof(header));
cout << header.versionMaj << "," << header.versionMin << endl;
}
else
{
cout << "Error: No file found" << endl;
}
}
}


I'm not sure why it is complaining about the prototype I think I have everything right in the header. Also all the variables in the header struct come from this link.



Any help would be greatly appreciated.
Thanks










share|improve this question

























  • You're missing the return type from the PointCloud::read definition. And you have unmatched braces; I think there is a closing brace (}) too much at the bottom.

    – ravnsgaard
    Nov 21 '18 at 22:55













  • @ravnsgaard, do I still need to specify a return type even though it's void?

    – p0ps1c1e
    Nov 22 '18 at 2:12











  • Yes, you do. You're running into an ancient rule in the system (inherited from C) that makes anything not explicitly declared an int. Your compiler should have more to say about this... What compiler are you using? What version?

    – ravnsgaard
    Nov 22 '18 at 12:36











  • I'm running GCC im not sure the version as I'm on Windows and its kind of a pain to check

    – p0ps1c1e
    Nov 22 '18 at 18:15






  • 1





    You're not returning anything. So, the return type should be void. It already is in your declaration, but there's no return type on your definition. This mismatch is what the compiler's complaining about.

    – ravnsgaard
    Nov 22 '18 at 19:07














0












0








0








I'm fairly new at C++, but I'm trying to read in a .las file. I'm sort of following this youtube video, but I'm still having some issues reading in the file.



I'm getting several errors:



error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
candidate is: void PointCloud::read(const string&)|
expected declaration before '}' token|
error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
error: candidate is: void PointCloud::read(const string&)|
error: expected declaration before '}' token|


Code:



#ifndef POINTCLOUD_H
#define POINTCLOUD_H
#include <stdint.h>
#include <string>

class PointCloud
{

public:
PointCloud(const std::string &path);

private:
struct Header
{
char magic[4];
uint16_t fileSourceID;
uint16_t globalEncoding;
uint32_t guidData1;
uint16_t guidData2;
uint16_t guidData3;
uint8_t guidData4;
uint8_t versionMaj, versionMin;
char systemIdentifier[32];
char genSoftware[32];
uint16_t creationDay, creationYear;
uint16_t headerSize;
uint32_t pointDataOffset;
uint32_t numVarLenRecords;
char pointDataFormat;
uint16_t pointDataRecordLen;
uint32_t pointRecordNum;
uint32_t pointReturnNum[5];
double scaleX, scaleY, scaleZ;
double offX, offY, offZ;
double maxX, maxY, maxZ;
double minX, minY, minZ;
};
void read(const std::string &path);

};

#endif //POINTCLOUD_H

#include "PointCloud.h"
#include <iostream>
#include <stdexcept>
#include <fstream>>

using namespace std;
PointCloud::read(const string &path)
{
ifstream inf(path, ios::binary);
if(inf.is_open())
{
Header header;
inf.read((char *))&header, sizeof(header));
cout << header.versionMaj << "," << header.versionMin << endl;
}
else
{
cout << "Error: No file found" << endl;
}
}
}


I'm not sure why it is complaining about the prototype I think I have everything right in the header. Also all the variables in the header struct come from this link.



Any help would be greatly appreciated.
Thanks










share|improve this question
















I'm fairly new at C++, but I'm trying to read in a .las file. I'm sort of following this youtube video, but I'm still having some issues reading in the file.



I'm getting several errors:



error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
candidate is: void PointCloud::read(const string&)|
expected declaration before '}' token|
error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
error: candidate is: void PointCloud::read(const string&)|
error: expected declaration before '}' token|


Code:



#ifndef POINTCLOUD_H
#define POINTCLOUD_H
#include <stdint.h>
#include <string>

class PointCloud
{

public:
PointCloud(const std::string &path);

private:
struct Header
{
char magic[4];
uint16_t fileSourceID;
uint16_t globalEncoding;
uint32_t guidData1;
uint16_t guidData2;
uint16_t guidData3;
uint8_t guidData4;
uint8_t versionMaj, versionMin;
char systemIdentifier[32];
char genSoftware[32];
uint16_t creationDay, creationYear;
uint16_t headerSize;
uint32_t pointDataOffset;
uint32_t numVarLenRecords;
char pointDataFormat;
uint16_t pointDataRecordLen;
uint32_t pointRecordNum;
uint32_t pointReturnNum[5];
double scaleX, scaleY, scaleZ;
double offX, offY, offZ;
double maxX, maxY, maxZ;
double minX, minY, minZ;
};
void read(const std::string &path);

};

#endif //POINTCLOUD_H

#include "PointCloud.h"
#include <iostream>
#include <stdexcept>
#include <fstream>>

using namespace std;
PointCloud::read(const string &path)
{
ifstream inf(path, ios::binary);
if(inf.is_open())
{
Header header;
inf.read((char *))&header, sizeof(header));
cout << header.versionMaj << "," << header.versionMin << endl;
}
else
{
cout << "Error: No file found" << endl;
}
}
}


I'm not sure why it is complaining about the prototype I think I have everything right in the header. Also all the variables in the header struct come from this link.



Any help would be greatly appreciated.
Thanks







c++ las






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 22 '18 at 4:00







p0ps1c1e

















asked Nov 21 '18 at 22:49









p0ps1c1ep0ps1c1e

4217




4217













  • You're missing the return type from the PointCloud::read definition. And you have unmatched braces; I think there is a closing brace (}) too much at the bottom.

    – ravnsgaard
    Nov 21 '18 at 22:55













  • @ravnsgaard, do I still need to specify a return type even though it's void?

    – p0ps1c1e
    Nov 22 '18 at 2:12











  • Yes, you do. You're running into an ancient rule in the system (inherited from C) that makes anything not explicitly declared an int. Your compiler should have more to say about this... What compiler are you using? What version?

    – ravnsgaard
    Nov 22 '18 at 12:36











  • I'm running GCC im not sure the version as I'm on Windows and its kind of a pain to check

    – p0ps1c1e
    Nov 22 '18 at 18:15






  • 1





    You're not returning anything. So, the return type should be void. It already is in your declaration, but there's no return type on your definition. This mismatch is what the compiler's complaining about.

    – ravnsgaard
    Nov 22 '18 at 19:07



















  • You're missing the return type from the PointCloud::read definition. And you have unmatched braces; I think there is a closing brace (}) too much at the bottom.

    – ravnsgaard
    Nov 21 '18 at 22:55













  • @ravnsgaard, do I still need to specify a return type even though it's void?

    – p0ps1c1e
    Nov 22 '18 at 2:12











  • Yes, you do. You're running into an ancient rule in the system (inherited from C) that makes anything not explicitly declared an int. Your compiler should have more to say about this... What compiler are you using? What version?

    – ravnsgaard
    Nov 22 '18 at 12:36











  • I'm running GCC im not sure the version as I'm on Windows and its kind of a pain to check

    – p0ps1c1e
    Nov 22 '18 at 18:15






  • 1





    You're not returning anything. So, the return type should be void. It already is in your declaration, but there's no return type on your definition. This mismatch is what the compiler's complaining about.

    – ravnsgaard
    Nov 22 '18 at 19:07

















You're missing the return type from the PointCloud::read definition. And you have unmatched braces; I think there is a closing brace (}) too much at the bottom.

– ravnsgaard
Nov 21 '18 at 22:55







You're missing the return type from the PointCloud::read definition. And you have unmatched braces; I think there is a closing brace (}) too much at the bottom.

– ravnsgaard
Nov 21 '18 at 22:55















@ravnsgaard, do I still need to specify a return type even though it's void?

– p0ps1c1e
Nov 22 '18 at 2:12





@ravnsgaard, do I still need to specify a return type even though it's void?

– p0ps1c1e
Nov 22 '18 at 2:12













Yes, you do. You're running into an ancient rule in the system (inherited from C) that makes anything not explicitly declared an int. Your compiler should have more to say about this... What compiler are you using? What version?

– ravnsgaard
Nov 22 '18 at 12:36





Yes, you do. You're running into an ancient rule in the system (inherited from C) that makes anything not explicitly declared an int. Your compiler should have more to say about this... What compiler are you using? What version?

– ravnsgaard
Nov 22 '18 at 12:36













I'm running GCC im not sure the version as I'm on Windows and its kind of a pain to check

– p0ps1c1e
Nov 22 '18 at 18:15





I'm running GCC im not sure the version as I'm on Windows and its kind of a pain to check

– p0ps1c1e
Nov 22 '18 at 18:15




1




1





You're not returning anything. So, the return type should be void. It already is in your declaration, but there's no return type on your definition. This mismatch is what the compiler's complaining about.

– ravnsgaard
Nov 22 '18 at 19:07





You're not returning anything. So, the return type should be void. It already is in your declaration, but there's no return type on your definition. This mismatch is what the compiler's complaining about.

– ravnsgaard
Nov 22 '18 at 19:07












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53421517%2freading-las-file-into-c%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53421517%2freading-las-file-into-c%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







這個網誌中的熱門文章

Tangent Lines Diagram Along Smooth Curve

Yusuf al-Mu'taman ibn Hud

Zucchini