【发布时间】:2018-12-04 14:55:14
【问题描述】:
我正在使用 ubuntu 17.04 LTS 和 gcc 7.3 alognside CMake。不幸的是,我收到了这个错误:
[ 37%] Building CXX object source/server/Scripts/CMakeFiles/L5RP.dir/CarDealer/cardealer.cpp.o
/home/kkraujelis/Desktop/L5RP/ragemp/source/server/Scripts/CarDealer/cardealer.cpp:10:30: error: expected constructor, destructor, or type conversion before ‘(’ token
CarDealer::CarOffer::CarOffer(CarDealer::CarDealer const* dealer, uint32_t price, std::string const& model, double fuelUsagePerKilo) {
^
source/server/Scripts/CMakeFiles/L5RP.dir/build.make:182: recipe for target 'source/server/Scripts/CMakeFiles/L5RP.dir/CarDealer/cardealer.cpp.o' failed
make[2]: *** [source/server/Scripts/CMakeFiles/L5RP.dir/CarDealer/cardealer.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:194: recipe for target 'source/server/Scripts/CMakeFiles/L5RP.dir/all' failed
make[1]: *** [source/server/Scripts/CMakeFiles/L5RP.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
我在任何地方读到它都被证明是基本的语法错误或许多其他事情。可能我是个盲人,但是每次我检查代码时似乎都没有问题。
标题:
#pragma once
#define SIMEONS_CARDEALER 0
namespace L5RP {
namespace Scripts {
namespace CarDealer {
class CarDealer;
class CarDealerScript;
class CarOffer {
CarDealer const* dealer;
uint32_t price;
std::string model;
double fuelUsagePerKilo;
public:
CarOffer(
CarDealer const* dealer,
uint32_t price,
std::string const& model,
double fuelUsagePerKilo
);
CarDealer const* getDealer() const;
uint32_t getPrice() const;
std::string const& getModelName() const;
uint32_t getModel() const;
double getFuelUsagePerKilo() const;
};
/*** Some other classes ***/
}
}
}
#include "Simeons/simeons.h"
来源:
#include "../scripts.h"
using namespace L5RP;
using namespace L5RP::Scripts;
using namespace L5RP::Scripts::Government;
using namespace L5RP::Scripts::CarDealer;
using namespace L5RP::Scripts::Character;
using namespace L5RP::Scripts::VehicleLogic;
CarDealer::CarOffer::CarOffer(CarDealer::CarDealer const* dealer, uint32_t price, std::string const& model, double fuelUsagePerKilo) {
this->dealer = dealer;
this->price = price;
this->model = model;
this->fuelUsagePerKilo = fuelUsagePerKilo;
}
【问题讨论】:
-
您对类和命名空间使用了两个相同的名称
CarDealer。如果你声明使用命名空间,那么你不需要在类成员定义前加上命名空间。 -
我以前用过,结果没问题。不过我会尝试更改班级的名称。
-
以前的工作可能与今天的代码不同。
-
是的,改名解决了这个问题。但是,如果我有 CarDealer 命名空间并且我想在其中定义 CarDealer 类,您会为我推荐什么名称?我的意思是没有名字我不能上课。
-
可能在命名空间中命名类而不以 Car: Dealer、Offer 开头。
标签: c++ ubuntu gcc ubuntu-17.04