Reading .las file into C++
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
|
show 1 more comment
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
You're missing the return type from thePointCloud::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 anint
. 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 bevoid
. 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
|
show 1 more comment
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
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
c++ las
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 thePointCloud::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 anint
. 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 bevoid
. 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
|
show 1 more comment
You're missing the return type from thePointCloud::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 anint
. 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 bevoid
. 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
|
show 1 more comment
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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