- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - phát hiện rò rỉ bộ nhớ Ruby/Ruby on Rails
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在将我所有的 C++ Windows 应用程序迁移到 Ubuntu Linux。此应用程序在 Windows 7 操作系统的 Visual Studio 2015 Community 上运行良好。但是,在 Ubuntu Linux 上的代码块中运行时会出错。我已经使用以下简单的 Người
类复制了我收到的错误消息。
Error Message: 'comparePersonAge' was not declared in this scope
#ifndef Person_h
#define Person_h
#include
lớp Người
{
riêng tư:
int age;
std::string name;
công cộng:
Person(int a, std::string n) : age(a), name(n) {}
int getAge()
{
tuổi trở về;
}
std::string getName()
{
trả về tên;
}
inline friend bool comparePersonAge(const Person& p1, const Person& p2)
{
return p1.age < p2.age;
}
};
#kết thúc nếu
main.cpp
#include
#include
#include
#include "Person.h"
int chính()
{
Person p1(93, "harold");
Person p2(32, "james");
Person p3(67, "tracey");
std::vector v;
v.push_back(p1);
v.push_back(p2);
v.push_back(p3);
std::sort(v.begin(), v.end(), comparePersonAge);
std::cout << v[0].getAge() << " " << v[1].getAge() << " " << v[2].getAge() << std::endl;
}
在 Windows 机器上,输出为:32 67 93
,如预期的那样。在 Linux 上,错误消息如上所写。
Để ý:其他名为 DJR 的人在这篇文章中讨论了这个问题:Friend function not declared in this scope error .然而,他的解释非常含糊,我没有按照他的步骤去做。
他写道:
Previous comment should have read: It is a bug on the the Linux side. The code should work as written. I have code right now that compiles fine on the Windows side and when I move it to the Linux side I get the same error. Apparently the compiler that you are using on the Linux side does not see/use the friend declaration in the header file and hence gives this error. By simply moving the friend function's definition/implementation in the C++ file BEFORE that function's usage (e.g.: as might be used in function callback assignment), this resolved my issue and should resolve yours also.
我不知道他把友元函数的定义移到函数使用之前的C++文件中是什么意思。这到底是什么意思?
câu trả lời hay nhất
bạn bè
关键字的目的是对访问规则(được bảo vệ
Vàriêng tư
)进行异常(exception)处理,给一个类或函数不允许访问成员。
因此,您可以在类声明之外声明和定义comparePersonAge()
函数,并在声明内使用bạn bè
关键字,使该函数能够访问私有(private)成员,特别是年龄
。
关于c++ - 错误 : 'Friend Member Function Name' was not declared in this scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35463169/
Tôi có một loạt các chuỗi chứa danh sách các tên ở định dạng họ, tên, được phân tách bằng dấu phẩy như thế này: tên tuần tự hóa "tên họ" từ chuỗi, chúng tôi đã tìm thấy một chuỗi trên Stack Overflow
Tôi nhận được điều gì đó thực sự kỳ lạ khi cố gắng hợp nhất nhiều khung dữ liệu. Trợ giúp! Tôi cần hợp nhất một loạt các khung dữ liệu theo cột "RID" và "VISCODE". Sau đây là ví dụ về giao diện của nó: d1 = data.frame(ID = sample(9,
Hãy làm ví dụ đầu tiên đơn giản nhất có thể. Tôi muốn biết cách áp dụng macro này; ví dụ như ở đây nó hoạt động printf("%s",macro(arg)); #include #include #include #define
Có sự khác biệt nào giữa 2 cách khai báo Bean sau đây không? @Bean(name = "bean1") public A getA() { return new A() } @Bean @Quali
if(c.get_name(&name) && name && !strcmp(name, contName)) Ai có thể cho tôi biết dòng mã này có ý nghĩa gì trong C++ Câu trả lời hay nhất Nếu c có tên và nó bằng co
Tôi là người mới bắt đầu sử dụng Rails và tôi đang gặp một số vấn đề khi tinh chỉnh truy vấn tìm kiếm của mình: Trong Bộ điều khiển tôi đang gọi: def index if params[:search] @persons = Pers
Bất cứ ai có thể giúp tôi giải quyết lỗi biên dịch ở phần cuối của mã này, nó nói là tạo hàm tạo, vui lòng giúp đỡ public class Officer { public static void main(String args[]
đóng cửa. Câu hỏi này yêu cầu chi tiết hoặc rõ ràng. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện câu hỏi này? Thêm chi tiết và làm rõ câu hỏi bằng cách chỉnh sửa bài đăng này Đã đóng 8 năm trước. Cải thiện t
Tôi đã tạo một ứng dụng web có createBook.xhtml sử dụng công nghệ JSF và nó sử dụng các hạt được quản lý. Trong trang này, người dùng phải điền thông tin được yêu cầu vào các trường đầu vào và nhấp vào nút gửi. Sau đó bạn nên sử dụng do
Này, tôi đang cố gắng tìm ra cách chuyển đổi một câu lệnh hoạt động trong mySQL sang PostgreSQL và tôi tò mò liệu có ai biết giải pháp không. Đây là một câu lệnh hợp lệ trong mySQL: def self.by_name(keywor
Điều bất lợi lớn nhất là gì nếu tôi tạo một kiểu cho tất cả các kiểu thay vì sử dụng chuỗi và kiểu nguyên thủy? Thông thường nó có dạng: String name = Person.getName(); int age = Person.ge
Tôi đang cố gắng trích xuất tên vùng ngoại ô từ: 12 tên đường, tên vùng ngoại ô, CTG 1234 bằng cách sử dụng các biểu thức thông thường trong PHP. Cả tên đường phố và vùng ngoại ô đều có thể dài bao nhiêu từ tùy ý. CTG là
Tôi có một thành phần gốc hiển thị thành phần chi tiết cá nhân và tôi đang chèn phạm vi trình xác thực của thành phần gốc. Nếu tôi sử dụng chỉ thị v-validate và this.$validator.validateAll() hoặc cái này
Bây giờ, theo tôi hiểu, phần bên ngoài trong khai báo name[] cho trình biên dịch biết rằng nó được định nghĩa ở một nơi khác (trong chương trình của tôi, tôi định nghĩa nó bên dưới phần mà tôi sử dụng nó). Nhưng tại sao strlen() và sizeof lại có kết quả khác nhau? str
Tôi đang giải quyết một vấn đề: "Thiết kế một chương trình yêu cầu người dùng nhập một loạt tên (không theo thứ tự cụ thể nào). Sau đó
XML của tôi trông như thế này: Tôi muốn sử dụng JAXB để đọc nội dung này. Tôi biết tôi có thể thực hiện @XmlRootElement(name="thing") public class Thing{
Đối với chuỗi name[] chúng ta có thể sử dụng strlen(name)+1 và sizeof(name) thay thế cho nhau mà không cần suy nghĩ nhiều trong mã của mình? Họ có khác nhau không? Mình kiểm tra thì thấy kiểu trả về của cả 2 đều giống nhau, si
Tôi đang cố gắng trích xuất tên vùng ngoại ô từ: 12 tên đường, tên vùng ngoại ô, CTG 1234 bằng cách sử dụng các biểu thức thông thường trong PHP. Tên đường phố và vùng ngoại ô có thể có độ dài bất kỳ. CTG là st
đóng cửa. Câu hỏi này yêu cầu chi tiết hoặc rõ ràng. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện câu hỏi này? Thêm chi tiết và làm rõ câu hỏi bằng cách chỉnh sửa bài đăng này Đã đóng 8 năm trước. Cải thiện t
Hướng dẫn bash liệt kê cú pháp cho for. Câu lệnh ghép dành cho tên [ [ trong [ word ... ] ] ] do list ; có nghĩa là dấu chấm phẩy trước do bị bỏ qua nếu mệnh đề in là tùy chọn
Tôi là một lập trình viên xuất sắc, rất giỏi!